如何在单个项目中使用多个配置和回溯?

maa*_*nus 43 java configuration logging logback

用于回溯的配置文件可以在类路径中找到,因此是特定于Eclipse项目的,这不是我想要的.我正在使用多个Java实用程序,它们都驻留在一个项目中(这个共享类路径),我需要为其中一些使用特定的配置.

我尝试过变量替换和Joram配置器,但没有什么对我有用.这很可能是我的错,我有一天会解决它,但是现在我需要一个简单的解决方案.

jto*_*ron 67

选项1:使用logback.configurationFile系统属性指定logback配置文件的位置.实际上,这允许您为每个项目提供多个配置文件.根据logback文档,this属性的值可以是URL,类路径上的资源或应用程序外部文件的路径.例如:
-Dlogback.configurationFile=/path/to/config.xml

选项2:使用变量替换来设置具有系统属性的日志文件的名称.例如:

  1. 你的appender可以设置文件如下:
    <file>/var/tmp/${mycompany.myapplication}.log</file>
  2. 然后你可以在启动java时指定该变量的值:
    -Dmycompany.myapplication=SomeUtility

选项3:使用系统属性设置记录器级别.这将允许您更多/更少地记录.例如:

  1. 将其放入您的logback配置文件中:
    <logger name="com.mycompany" level="${mycompany.logging.level:-DEBUG}"/>
    这会导致指定的包默认以DEBUG级别登录.
  2. 如果要在特定应用程序中将日志记录级别更改为INFO,请在启动该应用程序时将以下内容传递给java:
    -Dmycompany.logging.level=INFO

选项4:通过将系统属性命令行参数传递给java来添加/删除appender.这将允许您登录到不同的地方.请注意,条件处理需要janino.例如:

  1. 将它放入你的logback配置文件中,无论你将它放在哪里,当然要将值<appender-ref>更改ref为你自己<appender>的一个:
    <if condition="property("mycompany.logging.console").equalsIgnoreCase("true")"> <then><appender-ref ref="STDOUT"/></then></if>
  2. 如果要启用此appender,请在启动该应用程序时将以下内容传递给java:
    -Dmycompany.logging.console=true

关于系统属性,您将它们作为-D参数传递给java ,例如
java -Dmy.property=/path/to/config.xml com.mycompany.MyMain

  • 好的清单!另一种选择:logback支持编程配置.如果应用程序中的区别点是主类,那些类可以自己配置logback. (5认同)