У меня возникла проблема с настройкой log4j2 с Java.Проблема с log4j Конфигурация Java
У меня есть рабочий XML-конфигурация:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="DEBUG">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n" />
</Console>
<File name="DM_PREPUB" fileName="logs/41_2015/DM_PREPUB.log">
<MarkerFilter marker="DM_PREPUB" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout>
<pattern>%d %p %C{10} [%t] %m%n</pattern>
</PatternLayout>
</File>
<File name="BACKUP" fileName="logs/41_2015/BACKUP.log">
<MarkerFilter marker="BACKUP" onMatch="ACCEPT" onMismatch="DENY" />
<PatternLayout>
<pattern>%d %p %C{10} [%t] %m%n</pattern>
</PatternLayout>
</File>
</appenders>
<loggers>
<logger name="foo.bar" level="DEBUG">
<appender-ref ref="DM_PREPUB" />
<appender-ref ref="BACKUP" />
</logger>
<root level="ALL">
<appender-ref ref="Console" />
</root>
</loggers>
</configuration>
Как вы можете видеть, этот конфиг создает два FILE appenders с соответствующими маркерами. Совсем просто.
Я попробовал и реализовать ту же конфигурации в Java, но не повезло:
ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
builder.setStatusLevel(org.apache.logging.log4j.Level.ALL);
builder.setConfigurationName("DMWorkflow");
builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL).addAttribute("level", org.apache.logging.log4j.Level.DEBUG));
// console appender
AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT);
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%d{HH:mm:ss.SSS} [%t] %-5level - %msg%n"));
builder.add(appenderBuilder);
// main log appender
appenderBuilder = builder.newAppender("DM_PREPUB" /*appender name*/, "FILE" /*appender type*/)
.addAttribute("fileName", "logs/41_2015/DM_PREPUB.log");
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%d %p %C{10} [%t] %m%n"));
appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.ACCEPT, Filter.Result.DENY).addAttribute("marker", "DM_PREPUB"));
builder.add(appenderBuilder);
// step appenders
appenderBuilder = builder.newAppender("BACKUP" /*appender name*/, "FILE" /*appender type*/)
.addAttribute("fileName", "logs/41_2015/BACKUP.log");
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%d %p %C{10} [%t] %m%n"));
appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.ACCEPT, Filter.Result.DENY).addAttribute("marker", "BACKUP"));
builder.add(appenderBuilder);
// main logger
LoggerComponentBuilder componentBuilder = builder.newLogger("foo.bar", org.apache.logging.log4j.Level.DEBUG).add(builder.newAppenderRef("DM_PREPUB"));
// step loggers
componentBuilder.add(builder.newAppenderRef("BACKUP"));
builder.add(componentBuilder);
builder.add(builder.newRootLogger(org.apache.logging.log4j.Level.ALL).add(builder.newAppenderRef("Stdout")));
Configurator.initialize(builder.build());
В обоих случаях я создаю экземпляр РЕГИСТРАТОРУ так:
logger = LogManager.getLogger("foo.bar");
globalMarker = MarkerManager.getMarker("DM_PREPUB");
Код конфигурации Java не кажется, что это сложно, поэтому я не вижу, где я ошибся.
Если бы у вас была какая-либо помощь, это могло бы быть здорово.
Спасибо!
Erwann
Я забыл указать, что во время выполнения файлы создаются в порядке! Но они остаются пустыми, как и консоль ... – Erwann
вы можете использовать ссылку «изменить», чтобы добавить это к самому вопросу, а не к комментарию. –
, и вы регистрируетесь с маркером в качестве аргумента? (например, logger.info (globalMarker, «ACCEPT 1») правильно? –