Java 如何在一个项目中使用多个带有回登录的配置?

Java 如何在一个项目中使用多个带有回登录的配置?,java,logging,configuration,logback,Java,Logging,Configuration,Logback,logback的配置文件位于类路径上,因此是特定于Eclipse项目的,这不是我想要的。我正在使用多个Java实用程序,它们都驻留在一个项目中(这共享类路径),并且我需要为其中一些使用特定的配置 我尝试过变量替换和Joram配置程序,但都不管用。这很可能是我的错,我打算有一天解决它,但现在我需要一个简单的解决方案。选项1:使用logback.configurationFile系统属性指定logback配置文件的位置。这实际上允许您在每个项目中拥有多个配置文件。根据,此属性的值可以是URL、类路径

logback的配置文件位于类路径上,因此是特定于Eclipse项目的,这不是我想要的。我正在使用多个Java实用程序,它们都驻留在一个项目中(这共享类路径),并且我需要为其中一些使用特定的配置


我尝试过变量替换和Joram配置程序,但都不管用。这很可能是我的错,我打算有一天解决它,但现在我需要一个简单的解决方案。

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

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

  • 您的appender可以按如下方式设置文件:
    /var/tmp/${mycompany.myapplication}.log
  • 然后,您可以在启动java时指定该变量的值:
    -Dmycompany.myapplication=SomeUtility
  • 选项3:使用系统属性设置记录器级别。这将允许您多/少记录日志。例如:

  • 将其放入您的logback配置文件:

    默认情况下,这会导致指定的包在调试级别进行日志记录
  • 如果要在特定应用程序中将日志记录级别更改为INFO,则在启动该应用程序时将以下内容传递给java:
    -Dmycompany.logging.level=INFO
  • 选项4:通过向java传递系统属性命令行参数来添加/删除追加器。这将允许您登录到不同的位置。请注意。例如:

  • 将其放入您的logback配置文件中,无论您在哪里放置
    ,将
    ref
    值更改为您自己的
    值,当然:
    
    
  • 如果要启用此appender,请在启动该应用程序时将以下内容传递给java:
    -Dmycompany.logging.console=true
  • 关于系统属性,您可以将它们作为
    -D
    参数传递给java,例如

    java-Dmy.property=/path/to/config.xml com.mycompany.MyMain

    在Spring启动应用程序中,您可以在logback配置文件中引用Spring概要文件

    
    %d{HH:mm:ss.SSS}|%5p}%logger{25}|%m%n
    utf8
    ...
    
    我使用了另一个基于的选项。有两个文件:

    • 包含环境属性的可选属性文件(environment.properties)
    • 和自定义配置(例如logback env test.xml)。所有这些文件都必须位于类路径上
    如果属性文件存在并定义了
    logEnv
    属性,例如

    logEnv = dev66
    
    logback尝试从logback env-
    dev66
    .xml中查找并包含自定义配置

    
    %d{HH:mm:ss.SSS}%-5级%logger{36}-%msg%n
    
    过温后,它将恢复到默认(
    部分)配置。请注意,在自定义配置文件中使用的是
    标记,而不是

    使用logback.xml管理上述所有内容:

    
    环境、财产
    logback env-${logEnv}.xml
    %d{HH:mm:ss.SSS}%-5级%logger{36}-%msg%n
    

    它将允许您对所有环境进行单独配置,定义自己的自定义配置(例如本地开发),而不影响其他环境。

    您需要为不同的部分提供什么“特定配置”?没有什么真正的“特殊”。。。在一些实用程序中,我需要记录更多的日志,而在另一些实用程序中,我需要记录更少的日志。这对我来说是最重要的部分。我还想将输出重定向到不同的文件中(理想情况下是基于主类的文件)。听起来您应该能够从单个配置文件中管理所有输出。我不确定您的问题中的“特定于Eclipse项目”是什么意思。你能澄清一下你到底想要什么吗?@Ryan Stewart我看不出如何从一个配置文件中管理它。有类
    Main1
    Main2
    。对于他们,我使用不同的记录器,可以设置不同的日志级别。那很好。但是它们都使用类
    Common1
    ,我需要根据
    Main*
    类中的哪个类是主类(即启动了什么程序)来设置日志记录级别,每个Eclipse项目只有一个类路径,因此每个Eclipse项目只有一个logback配置文件。这很好,除非项目中有多个主类,您需要不同的详细日志记录。很好的列表!另一个选项:logback支持编程配置。如果应用程序中的差异点是主类,则这些类可以自行配置回登录。在选项4中,您以“但它应该是”开始条件
    logEnv = dev66