以编程方式在调试模式下启用Logback?

时间:2011-12-12 23:20:32

标签: java logging configuration logback rollingfileappender

我想知道是否有办法以编程方式启用调试模式。由于我不允许使用配置文件,因此我目前以编程方式配置所有内容。最近,我遇到了一个问题,RollingFileAppender停止写入文件虽然FileAppender工作得很好。事实上,RollingFileAppender上周也在工作,自那以后我所知道的一切都没有改变。

如果有办法启用调试,请告诉我,因为使用配置文件(logback.xml)执行此操作似乎不起作用。

1 个答案:

答案 0 :(得分:2)

在我发布问题之后,Tony在这里提供了一个很好的答案。

http://old.nabble.com/Enable-Debugging-Mode-Programmatically--td32961424.html

当您试图弄清楚为什么LogBack在某些情况下不起作用时,这非常有用。我选择使用第一种方式进行初始化代码。

请记住,这是您选择不使用类似我的用例的配置文件。


来自:tony19

有几种方法:

1)使用StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext)

OR

2)加载硬编码的配置XML字符串w / configuration.debug设置为'true':

static final String LOGBACK_XML = 
    "<configuration debug='true'>" + 
    "  <appender name='FILE' class='ch.qos.logback.core.RollingFileAppender'>" +
    "    <file>foo.log</file>" +
    "    <append>true</append>" +
    "    <encoder>" +
    "      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>" +
    "    </encoder>" +
    "  </appender>" +
    "  <root level='INFO'>" +
    "    <appender-ref ref='FILE' />" +
    "  </root>" +
    "</configuration>"
    ;

static public void configLogback() {
    LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
            try {
           JoranConfigurator configurator = new JoranConfigurator();
           configurator.setContext(lc);
           lc.reset();

           configurator.doConfigure(new ByteArrayInputStream(LOGBACK_XML.getBytes()));
       } catch (JoranException je) {
           je.printStackTrace();
       }

       // you can also print the errors/warning explicitly (instead of debug='true' in xml)
       //StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
}