2016-09-30 74 views
0

進出口使用Log4j2 2.6.2.At應用程序的開始,我打電話以下代碼編程方式配置Log4j2與ConfigurationBuilder

ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); 
builder.setStatusLevel(Level.ERROR); 
builder.setConfigurationName("OverrideDefaultConsoleLayout"); 
AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); 
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%% %msg%n"));  
builder.add(appenderBuilder); 
builder.add(builder.newLogger("Log4j2Test", Level.DEBUG).add(builder.newAppenderRef("Stdout")).addAttribute("additivity", false)); 
builder.add(builder.newRootLogger(Level.DEBUG).add(builder.newAppenderRef("Stdout"))); 
Configurator.initialize(builder.build()); 
LogManager.getLogger("Log4j2Test").error("Output % followed by this message"); 

我提到了以下文件:http://logging.apache.org/log4j/2.x/manual/customconfig.html

我的目標是以編程方式配置Log4j2。作爲一個試用版,我試圖覆蓋控制檯Appender的默認佈局。

沒有配置文件(.properties,.xml)可供應用程序使用。因此,在啓動時會顯示以下消息。

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 

的輸出被顯示爲

15:43:50.865 [main] ERROR Log4j2Test - Output % followed by this message 

即默認佈局正在使用中。我的默認程序覆蓋不起作用。任何人都可以幫助糾正代碼?

回答

0

只是調用您顯示的代碼可能無法正常工作。它需要被編碼爲一個擴展ConfigurationFactory的類,並用@Plugin註釋,以便Log4j能夠發現它並使用它而不是查找配置文件。

鏈接到Log4j手冊頁上的示例代碼顯示瞭如何執行此操作。