如何使logback识别logback.xml?

时间:2017-11-21 13:39:02

标签: java logback

目前,当我执行代码时,它不会创建任何日志文件。 logback.xml配置正常,但是我没有看到配置xml文件的位置的方法

1 个答案:

答案 0 :(得分:0)

根据Logback manual chapter on Configuration

  

让我们首先讨论尝试配置自身后面的logback的初始化步骤:

     
      
  1. Logback尝试在类路径中查找名为 logback-test.xml 的文件。
  2.   
  3. 如果未找到此类文件,则logback会尝试在类路径中查找名为 logback.groovy 的文件。
  4.   
  5. 如果找不到此类文件,它会在类路径中检查文件 logback.xml
  6.   
  7. 如果没有找到这样的文件,则使用服务提供者加载工具(在JDK 1.6中引入)通过查找文件 META-INF \ services \ ch来解决com.qos.logback.classic.spi.Configurator接口的实现。类路径中的qos.logback.classic.spi.Configurator 。其内容应指定所需Configurator实现的完全限定类名。
  8.   
  9. 如果以上都不成功,则logback会自动使用BasicConfigurator自行配置,这会导致日志记录输出定向到控制台。
  10.   

这个试图告诉你的标准方法是将logback.xml放在" normal"的类路径中。运行,并在类路径中有一个logback-test.xml来描述在运行自动化测试时如何记录。 (例如,您可能希望在常规应用程序中记录到一个文件,但是让自动单元测试只需登录到控制台。)将文件放入类路径的确切过程取决于您使用的构建系统使用。例如,使用流行的Maven构建系统中的默认设置,您可以将logback.xml放在src/main/resources内,并在src/test/resources内放置(如果需要)logback-test.xml。如果您在执行此步骤时遇到问题,则可能需要搜索或询问另一个问题,其中包含有关您正在使用的构建工具链的更多详细信息。另请务必阅读" What is a classpath?"

另一种方法,也在Logback手册中列出:

  

您可以使用名为" logback.configurationFile"的系统属性指定默认配置文件的位置。此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径。

java -Dlogback.configurationFile=/path/to/config.xml chapters.configuration.MyApp1
     

请注意,文件扩展名必须为" .xml"或" .groovy"。

这并不常见,但有时如果您需要在具有特定日志配置的特定环境中运行,或者运行某种自动测试将输出定向到与正常测试不同的地方,它可以派上用场直接配置这样的路径。