Mar*_*oft 25 java logging log4j
我正在一个简单的测试应用程序中尝试log4j.我在eclipse中创建了一个新的Java项目,并将log4j JAR(v1.2.16)添加到我的构建路径中.然后我创建一个打印Hello World的简单类.然后我使用log4j Logger
类来记录信息消息.当我运行应用程序时,我看到日志消息,使用我认为是默认的appender和布局.大.我遇到的麻烦是添加我自己的配置.这就是我所做的:
创建了一个带有自定义appender和日志级别的log4j.properties文件,并将其放入src文件夹(在编译时将其复制到bin文件夹中).运行应用程序 - 没有变化.
我尝试添加PropertyConfigurator.configure("log4j.properties")
.运行应用程序 - 没有变化.没有错误,但没有变化.
我需要做些什么才能让log4j加载我的配置文件?
cro*_*wne 37
对于那些没有RTFM的人,请查看标题默认初始化过程,您将在其中找到以下内容:
确切的默认初始化算法定义如下:
- 将
log4j.defaultInitOverride
系统属性设置为除"false
" 之外的任何其他值将导致log4j跳过默认初始化过程(此过程).- 将资源字符串变量设置为
log4j.configuration
系统属性的值.指定默认初始化文件的首选方法是通过log4j.configuration
系统属性.如果未定义系统属性log4j.configuration,则将字符串变量资源设置为其默认值 "log4j.properties
".- 尝试将资源变量转换为URL.
- 如果资源变量无法转换为URL(例如由于MalformedURLException),则通过调用返回URL的org.apache.log4j.helpers.Loader.getResource(resource,Logger.class)从类路径中搜索资源. .请注意,字符串"
log4j.properties
"构成格式错误的URL.有关 搜索位置的列表,请参阅 Loader.getResource(java.lang.String).- 如果找不到URL,则中止默认初始化.否则,请从URL配置log4j.的 PropertyConfigurator 将用于解析URL除非URL与"结束到配置log4j
.xml
"扩展,在这种情况下 DOMConfigurator 将被使用.您可以选择指定自定义配置程序.该值log4j.configuratorClass
系统属性作为您的自定义配置的完全限定类名.您指定的自定义配置程序必须实现该Configurator
接口.
哎呀.我发现问题是eclipse导入了错误的Logger
类.它导入了java.util.logging.Logger,当然它有自己的配置,与log4j不同.哦,希望别人这样做,并通过阅读这个问题解决它.
classpath
如果classpath
已定义,则问题可能出在。
无法加载的原因(在我的情况下):log4j.properties
我的一个jar中有一个冲突的文件,并且它使我的jar中的文件超载classpath
。
简而言之,如果您的log4j.properties
文件没有加载,则可能会有其他文件覆盖它。
只是以为我也会把这个扔进去,以防其他人碰到这个。我刚刚花了最后5个小时来弄清楚为什么我的默认设置log4j.properties
无法加载。
归档时间: |
|
查看次数: |
52987 次 |
最近记录: |