0
這是我log4j2.xml
單/修改log4j2的過濾器編程
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyAppx" packages="">
<Appenders>
<RollingFile name="Application" fileName="/var/log/flex/flextask-websocket.log" filePattern="/var/log/flex/archive/flextask-websocket-%d{yyy-MM-dd}.log.gz">
<Filters>
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} websocket %-10level %class{36} %L %M - %msg%xEx%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="Application" />
</Root>
</Loggers>
現在我想修改過濾器編程
到目前爲止我的代碼是
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
Configuration config = ctx.getConfiguration();
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
根據我懷疑要做的xml文件的結構
loggerConfig.getAppenders().get("Application").getFilters()
但getFilters()
方法不可用
我唯一能做
loggerConfig.getFilter()
它返回單個濾波器。 但是我怎樣才能訪問所有的過濾器?過濾器和appender之間的關係在哪裏?
我的目標是在運行時只過濾特定的日誌級別。
所以當我說例如。 setFilter("Level1;Level2")
我想刪除allFilters
和過濾僅適用於Level1和Level2
嗨,你找到了解決方案嗎?我正在處理類似的任務,我需要列出appender的過濾器 – zaratustra