本文介紹了如何通過編程正確配置log4j2?的處理方法,對(duì)大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問題描述
我正在嘗試將log4j2設(shè)置為使用RollingFileAppender寫入日志。我希望以編程方式配置日志記錄系統(tǒng),而不是使用XML文件。
以下是我嘗試的內(nèi)容(與https://logging.apache.org/log4j/2.x/manual/customconfig.html#Configurator中的文檔基本相同):
public static void configure(String rootLevel, String packageLevel) {
ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory
.newConfigurationBuilder();
builder.setConfigurationName("RollingBuilder");
builder.setStatusLevel(Level.TRACE);
// Create a rolling file appender
LayoutComponentBuilder layoutBuilder = builder.newLayout("PatternLayout")
.addAttribute("pattern", "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{1}:%L - %m%n");
ComponentBuilder triggeringPolicy =
builder
.newComponent("Policies")
.addComponent(
builder
.newComponent("SizeBasedTriggeringPolicy")
.addAttribute("size", "200M")
);
AppenderComponentBuilder appenderBuilder =
builder
.newAppender("rolling", "RollingFile")
.addAttribute("fileName", "log")
.addAttribute("filePattern", "log.%d.gz")
.add(layoutBuilder)
.addComponent(triggeringPolicy);
builder.add(appenderBuilder);
// Create new logger
LoggerComponentBuilder myPackageLoggerBuilder =
builder.newLogger("com.mypackage", packageLevel)
.add(builder.newAppenderRef("rolling"))
.addAttribute("additivity", false);
builder.add(myPackageLoggerBuilder);
RootLoggerComponentBuilder rootLoggerBuilder =
builder
.newRootLogger(rootLevel)
.add(builder.newAppenderRef("rolling"));
builder.add(rootLoggerBuilder);
// Initialize logging
Configurator.initialize(builder.build());
}
我在main方法的開頭調(diào)用configure()方法。我在運(yùn)行程序時(shí)創(chuàng)建了一個(gè)名為log的文件,但所有日志輸出都進(jìn)入標(biāo)準(zhǔn)輸出,log文件保持為空。
有人能幫我找出我的配置出了什么問題嗎?
我沒有使用任何log4j配置文件,如果這有什么不同的話。在我的代碼中還使用了slf4jAPI。依賴關(guān)系-
org.apache.logging.log4j:log4j-api:2.11.1
org.apache.logging.log4j:log4j-core:2.11.1
org.apache.logging.log4j:log4j-slf4j-impl:2.11.1
org.slf4j:slf4j-api:1.7.25
推薦答案
請(qǐng)找到示例根日志,最終需要調(diào)用重新配置函數(shù)。
RootLoggerComponentBuilder rootLogger = builder
.newRootLogger(Level.ALL)
.add(builder.newAppenderRef("LogToRollingFile"));
LoggerComponentBuilder logger = builder
.newLogger("MyClass",Level.ALL)
.addAttribute("additivity", false);
Configurator.reconfigure(builder.build());
這篇關(guān)于如何通過編程正確配置log4j2?的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,






