gpt4 book ai didi

java - 如何手动轮换 log4j 日志

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:41 26 4
gpt4 key购买 nike

我将 log4j 配置为每天轮换日志。

在特殊情况下,我想手动触发额外的日志轮换。

这可能吗?如果可能:如何?

这样解决:

void rolloverLogs() {
for(final Enumeration<?> loggers = LogManager.getCurrentLoggers(); loggers.hasMoreElements(); ) {

final Logger logger = (Logger) loggers.nextElement();

for (final Enumeration<?> appenders = logger.getAllAppenders(); appenders.hasMoreElements(); ) {

final Appender a = (Appender) appenders.nextElement();

if(!RollingFileAppender.class.isInstance(a))
continue;

((RollingFileAppender)a).rollOver();
}
}
}

最佳答案

Lahiru 展示的技术只会定位为特定 Logger 配置的 Appender,该 Logger 基于代码所在的类。如果配置更改,定位的确切 Appender 可能会有所不同。

如果您知道 Appender 名称,最好的方法是:

org.apache.logging.log4j.core.LoggerContext context = LogManager.getContext(false);
Appender appender = context.getConfiguration().getAppender(appenderName);
if (appender instanceof RollingFileAppender) {
((RollingFileAppender) appender).getManager().rollover();
}

如果你想滚动所有的 RollingFileAppenders 你可以这样做:

org.apache.logging.log4j.core.LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
for (Appender appender : context.getConfiguration().getAppenders().values()) {
if (appender instanceof RollingFileAppender) {
((RollingFileAppender) appender).getManager().rollover();
}
}

关于java - 如何手动轮换 log4j 日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33996115/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com