在使用Log4j 2(2.4和2.6)時遇到問題。以前我有使用logback和XML配置的自定義過濾器。決定改用ConfigurationBuilder是合理的。使用ConfigurationBuilder的過濾器
只給一個簡單的例子:
\t \t ConfigurationBuilder<BuiltConfiguration> builder =
ConfigurationBuilderFactory.newConfigurationBuilder();
\t builder.setConfigurationName("TestLogger");
\t
\t AppenderComponentBuilder appenderBuilder = builder.newAppender("file", "FILE") \t \t \t
.addAttribute("fileName", "C:\\client_test.log").addAttribute("append", false).add(builder.newFilter("LevelRangeFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL).
addAttribute("minLevel", Level.INFO).addAttribute("maxLevel", Level.INFO)); \t \t
\t \t \t
\t
appenderBuilder.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%msg%n%throwable"));
\t
\t builder.add(appenderBuilder);
\t builder.add(builder.newLogger("TestLogger", Level.INFO)
\t \t \t .add(builder.newAppenderRef("file"))
\t \t \t \t .addAttribute("additivity", false));
\t \t
\t LoggerContext logctx = Configurator.initialize(builder.build());
\t \t
\t logFile = logctx.getLogger("TestLogger");
請原諒我的無知,我是相當新的Java配置的log4j的!
如果我初始化上下文(只是當前類我在):
LoggerContext logctx = Configurator.initialize(builder.build());
logFile = logctx.getLogger(「TestLogger」);
,並嘗試:
logFile.info( 「信息級別的日誌」); logFile.error(「Error level logging」);
我看到這兩個輸出。我認爲與LevelRangeFilter的一系列INFO-> INFO我只會看到信息日誌級別?
現實我要的是有根據的日誌級別不同的追加程序(如我與的logback xml配置)。
我發現很難按照文檔 - 試圖確定各種插件和屬性與各種組件的建設者和只是一般的概念中。
的LevelRangeFilter似乎符合該法案 - 在那裏我可以爲newAppenderRef到構建添加不同的附加目的地,並把它們寫出來,以基於窄幅區間不同的文件。
有什麼想法?
謝謝!
c
解決了它。用它作爲參考:https://logging.apache.org/log4j/2.x/log4j-core/apidocs/index.html – Charles