【发布时间】:2012-01-15 07:54:43
【问题描述】:
我正在尝试以编程方式配置 LogBack 的 RollingFileAppender (ch.qos.logback.core.rolling.RollingFileAppender),但它似乎不起作用。当我使用FileAppender 时,使用完全相同的配置(更少的策略/触发器)似乎一切正常,所以我猜这不是权限问题。我尝试注释掉所有策略配置,但这也无济于事。下面是我的示例代码,带有一些硬编码值。此外,从来没有任何错误。当我调试 LogBack 源代码时,我没有看到任何可能出错的地方。
任何提示都是赞赏的。我需要在没有配置文件的情况下让它工作,因为这在我的组织中是一个限制。我正在 MacBook 上对此进行测试。
Logger logger = (Logger)LoggerFactory.getLogger(applicationName);
LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
lc.reset();
RollingFileAppender<ILoggingEvent> fileAppender =
new RollingFileAppender<ILoggingEvent>();
fileAppender.setAppend(true);
fileAppender.setFile("/Users/Jack/Desktop/logs/" + applicationName + ".log");
fileAppender.setContext(lc);
SizeBasedTriggeringPolicy<ILoggingEvent> rPolicy =
new SizeBasedTriggeringPolicy<ILoggingEvent>("20MB");
fileAppender.setTriggeringPolicy(rPolicy);
TimeBasedRollingPolicy<ILoggingEvent> tPolicy =
new TimeBasedRollingPolicy<ILoggingEvent>();
tPolicy.setFileNamePattern("/archive/" + applicationName + ".%d");
tPolicy.setMaxHistory(180);
tPolicy.setParent(fileAppender);
tPolicy.setContext(lc);
PatternLayout pl = new PatternLayout();
pl.setPattern("%d %5p %t [%c:%L] %m%n)");
pl.setContext(lc);
pl.start();
fileAppender.setLayout(pl);
fileAppender.start();
logger.addAppender(fileAppender);
logger.setLevel(Level.DEBUG);
logger.debug("Test message");
【问题讨论】:
-
我发现了这个问题。我忘了设置 RollingPolicy,所以 appender 永远不会启动。我认为它在无法启动时会引发异常,所以我忽略了这部分。
-
上周设置 RollingPolicy 后运行良好,但突然停止。我目前正在寻找一种以编程方式启用调试模式以查看发生了什么的方法。这绝对不是权限问题,因为 FileAppender 仍然有效。另一个线程在这里可用。 stackoverflow.com/questions/8482359/…
标签: java file logging logback rollingfileappender