Java 如何在一个项目中使用多个带有回登录的配置?
logback的配置文件位于类路径上,因此是特定于Eclipse项目的,这不是我想要的。我正在使用多个Java实用程序,它们都驻留在一个项目中(这共享类路径),并且我需要为其中一些使用特定的配置Java 如何在一个项目中使用多个带有回登录的配置?,java,logging,configuration,logback,Java,Logging,Configuration,Logback,logback的配置文件位于类路径上,因此是特定于Eclipse项目的,这不是我想要的。我正在使用多个Java实用程序,它们都驻留在一个项目中(这共享类路径),并且我需要为其中一些使用特定的配置 我尝试过变量替换和Joram配置程序,但都不管用。这很可能是我的错,我打算有一天解决它,但现在我需要一个简单的解决方案。选项1:使用logback.configurationFile系统属性指定logback配置文件的位置。这实际上允许您在每个项目中拥有多个配置文件。根据,此属性的值可以是URL、类路径
我尝试过变量替换和Joram配置程序,但都不管用。这很可能是我的错,我打算有一天解决它,但现在我需要一个简单的解决方案。选项1:使用logback.configurationFile系统属性指定logback配置文件的位置。这实际上允许您在每个项目中拥有多个配置文件。根据,此属性的值可以是URL、类路径上的资源或应用程序外部文件的路径。例如:
-Dlogback.configurationFile=/path/to/config.xml
选项2:使用变量替换设置具有系统属性的日志文件的名称。例如:
/var/tmp/${mycompany.myapplication}.log
-Dmycompany.myapplication=SomeUtility
默认情况下,这会导致指定的包在调试级别进行日志记录
-Dmycompany.logging.level=INFO
,将ref
值更改为您自己的
值,当然:
-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