
Hi all, Another update regarding the localization of log level names. I made some modifications to the custom converter for level names localization I implemented following Ceki's suggestion (i.e., CAL10NLevelConverter). The following is the converter I obtained. public class CAL10NLevelConverter extends ClassicConverter { private static String LOC_TRACE = locLevelName("TRACE"); private static String LOC_DEBUG = locLevelName("DEBUG"); private static String LOC_INFO = locLevelName("INFO"); private static String LOC_WARN = locLevelName("WARN"); private static String LOC_ERROR = locLevelName("ERROR"); @Override public String convert(ILoggingEvent event) { Level level = event.getLevel(); String locLevelName; switch (level.toString()) { case "TRACE": locLevelName = LOC_TRACE; break; case "DEBUG": locLevelName = LOC_DEBUG; break; case "INFO": locLevelName = LOC_INFO; break; case "WARN": locLevelName = LOC_WARN; break; case "ERROR": locLevelName = LOC_ERROR; break; default: locLevelName = LOC_DEBUG; } return locLevelName; } private static String locLevelName(String levelName) { IMessageConveyor mc = new MessageConveyor(Locale.getDefault()); Enum<Levels> key; switch (levelName) { case "TRACE": key = Levels.TRACE; break; case "DEBUG": key = Levels.DEBUG; break; case "INFO": key = Levels.INFO; break; case "WARN": key = Levels.WARN; break; case "ERROR": key = Levels.ERROR; break; default: key = Levels.DEBUG; } return mc.getMessage(key); } } Thanks to the static attributes I manged to reduce the number of invocations to the method MakePropertyResourceBoundle of CAL10N when using the custom converters for localizing level names. I also used this idea to implement a custom converter that localize the string "Caller+". Running my application using this new converter I obtain the same performances in term of execution time I get using logback with modified Level and CallerDataConverter classes. Cheers, Dario