#java #logging #log4j2
Вопрос:
Я пытаюсь настроить log4j2 с помощью кода, но мой файл свертки и мой пользовательский плагин»JTxtLogAppender» не работают. Проблема с катящимся файлом заключается в том, что файл журнала создан, но он не записывается ни в файл, ни в мой пользовательский плагин, но вывод в консоль работает.
Вот мой код:
String logFile = logPath "dxc.log";
String logFilePattern = logPath "dxc-%d{yyyy-MM-dd}.log";
PluginManager.addPackage("dxc");
ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder();
LayoutComponentBuilder layout = builder.newLayout("PatternLayout");
layout.addAttribute("pattern", "%d{yyyy-MM-dd HH:mm:ss} %-5p [%t] %c: %m%n");
AppenderComponentBuilder console = builder.newAppender("console", "Console")
.add(layout);
builder.add(console);
ComponentBuilder triggeringPolicy = builder.newComponent("Policies")
.addComponent(builder.newComponent("TimeBasedTriggeringPolicy"))
.addComponent(builder.newComponent("SizeBasedTriggeringPolicy").addAttribute("size", "100M"));
AppenderComponentBuilder rollingFile = builder.newAppender("rollingFile", "RollingFile")
.addAttribute("fileName", logFile)
.addAttribute("filePattern", logFilePattern)
.addAttribute("immediateFlush", true)
.addAttribute("append", true)
.addComponent(triggeringPolicy)
.add(layout);
builder.add(rollingFile);
AppenderComponentBuilder jTxtAppender = builder.newAppender("jTxtLogAppender", "JTxtLogAppender")
.add(layout);
builder.add(jTxtAppender);
RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.INFO)
.add(builder.newAppenderRef("console"))
.add(builder.newAppenderRef("rollingFile"))
.add(builder.newAppenderRef("jTxtLogAppender"));
builder.add(rootLogger);
Configurator.initialize(builder.build());
Configurator.setRootLevel(Level.INFO);
Ответ №1:
Перед выполнением всего вышеперечисленного кода я выполняю
LogManager.shutdown();
и это работает сейчас.