Опитвам се да добавя чрез код персонализиран appender, който трябва да регистрира някакъв пакет. И всичко работи с този код:
String loggerName = "org.test";
final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration cfg = ctx.getConfiguration();
if (cfg instanceof XmlConfiguration) {
//add appender if not added
Appender appender = cfg.getAppender(MyAppender.NAME);
if (appender == null) {
Appender appender = MyAppender.createAppender(MyAppender.NAME, "%highlight{%d [%t] %-5level: %msg%n%throwable}", "false", null);
appender.start();
cfg.addAppender(appender);
}
LoggerConfig logger = ((XmlConfiguration) cfg).getLogger(loggerName);
if (logger == null) {
logger = new LoggerConfig(loggerName, Level.DEBUG, true);
cfg.addLogger(loggerName, logger);
}
logger.addAppender(appender, Level.DEBUG, null);
} //closing the instanceof XMLConfiguration part
И така накратко... както виждате, създавам appender, ако не е бил дефиниран appender преди. След това създавам регистратор за org.test, ако не е добавен и добавям приложението към този регистратор.
Всичко е наред с изключение на едно нещо: новият appender и logger работи правилно. Въпреки това имам други добавки в моята XML конфигурация Console Appender и т.н.. и по някаква причина те СЪЩО са добавени като ниво за ОТСТРАНЯВАНЕ на грешки за регистратора на org.test... дори ако този регистратор няма НИКАКВИ други добавки, конфигурирани като в моя случай .. Отстранявам грешки .. има САМО един appender в конфигурационния обект.. но регистраторът все още изпраща съобщения за отстраняване на грешки до ВСИЧКИ добавки, които имам... (Предполагам, че всички, които имам на ниво ROOT, които бяха зададени на INFO ) ... отсега нататък също показват DEBUG съобщения от org.test ... как мога да премахна това добавяне и да използвам само това.. :(
Благодаря.