java - 在 Debug模式下以编程方式启用 Logback?

标签 java logging configuration logback rollingfileappender

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

请告诉我是否有办法启用调试,因为使用配置文件(logback.xml)似乎不起作用。

最佳答案

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

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

当您试图找出 LogBack 在某些情况下不起作用的原因时,这非常有帮助。我选择使用第一种方法来编写初始化代码。

请记住,这是当您选择不使用配置文件(就像我的用例一样)时的情况。

<小时/>

来自:tony19

有几种方法:

1) 使用 StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext)

或者

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);
}

关于java - 在 Debug模式下以编程方式启用 Logback?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8482359/

相关文章:

java - 64 位 JVM 的最大可能堆大小是多少?

java - 如何在 IntelliJ IDEA 中为 Maven Java 项目禁用 Kotlin 编译器?

java - 重定向 System.out 和 System.err

java - Spring Boot 启用 http 请求日志记录(访问日志)

Ruby:配置文件解析器与OptionParser结合

安卓中的java3d

java - PBEWithSHA256AndAES_256 解密适用于 Windows,不适用于 Unix/Linux

Python subprocess.call() 为每个 stdout 和 stderr 行添加前缀

xml - 为 log4net 设置动态连接字符串

java - 如何在 Android 应用程序中一次更改所有 Activity 转换?