Я пытаюсь программно настроить log4j для печати на консоль. Тем не менее, он не печатает в соответствии с заданным шаблоном макета. Моя конфигурация выглядит следующим образом.
public static void initializeConsoleLogging() {
/* configuration builder */
ConfigurationBuilder<BuiltConfiguration> builder =
ConfigurationBuilderFactory.newConfigurationBuilder();
builder.setStatusLevel(Level.DEBUG);
AppenderComponentBuilder console = builder.newAppender("stdout", "Console");
builder.add(console);
AppenderComponentBuilder file = null;
if (LoggingConfig.filename != null) {
file = builder.newAppender("log", "File");
file.addAttribute("fileName", LoggingConfig.filename);
builder.add(file);
}
LayoutComponentBuilder standard = builder.newLayout("PatternLayout");
standard.addAttribute("pattern", "%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n");
console.add(standard);
if (file != null)
file.add(standard);
RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.ALL);
rootLogger.add(builder.newAppenderRef("stdout"));
builder.add(rootLogger);
if (file != null) {
LoggerComponentBuilder logger = builder.newLogger("com", Level.DEBUG);
logger.add(builder.newAppenderRef("log"));
logger.addAttribute("additivity", false);
builder.add(logger);
}
Configurator.initialize(builder.build());
}
Я вызываю эту функцию, прежде чем делать что-либо еще в main, и вывод, который она показывает,
IPOMDP initialized
STEP: 0 BELLMAN ERROR: 8.81986301369863 BELIEF POINTS: 23 A VECTORS: 2
STEP: 1 BELLMAN ERROR: 9.967908805031445 BELIEF POINTS: 23 A VECTORS: 3
STEP: 2 BELLMAN ERROR: 4.486375 BELIEF POINTS: 23 A VECTORS: 4
STEP: 3 BELLMAN ERROR: 4.16434875 BELIEF POINTS: 23 A VECTORS: 6
STEP: 4 BELLMAN ERROR: 3.956131312500001 BELIEF POINTS: 23 A VECTORS: 6
STEP: 5 BELLMAN ERROR: 2.87103294867637 BELIEF POINTS: 23 A VECTORS: 7
Она не печатает дату или уровень журналахотя шаблон включает их.