登录 Eclipse/OSGi 插件
我开始开发一个Eclipse插件(从技术上讲,一个OSGi插件),我遇到的第一个问题是,我似乎无法像往常一样控制公共日志记录输出。
我已经在插件依赖项中包含了 commons-logging 包,事实上,当我记录某些内容(在 INFO 或更高的严重性下)时,它会记录到控制台。但是,我似乎无法在任何较低级别(例如DEBUG或TRACE)进行日志记录。
我已经指定了一个log4j.properties文件,它位于类路径上(对于运行时,就像共享资源日志记录包一样),但是该属性文件中的任何设置都不会对记录器的行为产生任何影响。
下面是 log4j.properties 文件:
# Log4j Logging levels, in order of decreasing importance are:
# FATAL, ERROR, WARN, INFO, DEBUG, TRACE
#
# Root logger option
log4j.rootLogger=ERROR,stdout
#,LOGFILE
# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %r (%l) %t%n - %m%n
我需要做什么才能实际控制记录器的输出?
下面是一些示例输出消息,希望格式设置可能与 java.util.logging 的默认值一致,或者向某人提供其他提示:
Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
SEVERE: fatal_message
Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
WARNING: warn_message
Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
INFO: info_message
更新:
我现在已经尝试了以下各种组合:
- org.osgi.service.log.LogService et al.
- slf4j
- 日志4J
- 共享资源日志记录
- java.util.logging
如果我从提示符手动运行OSGi,我只能获得DEBUG或更低级别的消息(这对于我正在开发的内容是不切实际的)。此外,我无法通过各种属性文件影响任何其他类型的日志记录配置。我在这方面尝试的一切似乎都被日食设置所覆盖。
我还尝试将上述库的各种配置文件放在许多地方,包括作为插件片段附加到它们各自的库,如这里所建议的那样,仍然会发生相同的结果。
我已经实现了一个自定义的LogListener,并使用System.out.println跟踪了日志消息的整个路径(无论如何,我知道该怎么做),并且调试消息一直存在,直到它们由我正在使用的任何底层日志记录API输出,然后它们消失。