可以在类路径中找到用于logback的配置文件,因此它是特定于Eclipse项目的,这不是我想要的。我正在使用多个Java实用程序,它们都驻留在一个项目中(这个共享类路径),我需要为其中一些使用特定的配置。
我尝试过变量替换和Joram配置器,但没有任何方法可以帮助我。这很可能是我的错,我有一天会解决它,但是现在我需要一个简单的解决方案。
答案 0 :(得分:59)
选项1:使用logback.configurationFile系统属性指定logback配置文件的位置。实际上,这允许您为每个项目提供多个配置文件。根据{{3}},此属性的值可以是URL,类路径上的资源或应用程序外部文件的路径。例如:
-Dlogback.configurationFile=/path/to/config.xml
选项2:使用变量替换来设置具有系统属性的日志文件的名称。例如:
<file>/var/tmp/${mycompany.myapplication}.log</file>
-Dmycompany.myapplication=SomeUtility
选项3:使用系统属性设置记录器级别。这将允许您更多/更少地记录。例如:
<logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
-Dmycompany.logging.level=INFO
选项4:通过将系统属性命令行参数传递给java来添加/删除appender。这将允许您登录到不同的地方。请注意logback documentation。例如:
<appender-ref>
置于何处,将ref
值更改为您自己的<appender>
之一,当然:
<if condition="property("mycompany.logging.console").equalsIgnoreCase("true")">
<then><appender-ref ref="STDOUT"/></then></if>
-Dmycompany.logging.console=true
关于系统属性,您将它们作为-D
参数传递给java,例如
java -Dmy.property=/path/to/config.xml com.mycompany.MyMain
答案 1 :(得分:1)
在Spring Boot应用程序中,您可以在logback配置文件中引用Spring Profiles。
请参见this article。
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<springProfile name="dev">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{HH:mm:ss.SSS} | %5p | %logger{25} | %m%n
</pattern>
<charset>utf8</charset>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="CONSOLE"/>
</root>
</springProfile>
...
答案 2 :(得分:0)
我使用了另一个基于Leonidas blog的选项。有一个可选的属性文件(environment.properties),其中包含环境属性和自定义配置(例如logback-env-test.xml)。所有这些文件必须在类路径上。
如果属性文件存在并定义了synchronized
属性,例如
logEnv
logback尝试从logback-env-dev66.xml查找并包括自定义配置
logEnv = dev66
否则,它将默认返回到默认(<included>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="STDOUT" />
</root>
</included>
部分)配置。请注意,自定义配置文件中使用的是<else>
标签,而不是<included>
。
logback.xml以管理以上所有内容:
<configuration>