The problem is that both PatternLayout and OnMarkerEvaluator have launch methods that need to be called (MarkerEvaluator seemed to work without it).
In addition, both must also know loggerContext (set by calling patternLayout.setContext (lc)), otherwise you will get the following:
[(%PARSER_ERROR[threadHash]) app=iv %PARSER_ERROR[d]] %PARSER_ERROR[level] %PARSER_ERROR[logger] - %PARSER_ERROR[msg]%PARSER_ERROR[n]
Now all is well.
source share