题
我开始发展一个日食的插件(从技术上讲,一个访插件)和第一个问题,我们遇到的是我似乎无法控制公共记录输出,因为我通常会。
我已经包含的公共记录包插件的依赖性,而事实上,当我日志的东西(在信息或更高的严重程度)也是登录控制台。然而,我似乎无法登录在任何较低的水平(例如"调试"或跟踪).
我已指定一个log4j.性文件,它是在类路径(为运行时,只是作为公共记录包),但没有设置,性质文件具有任何影响的行为的记录。
这里的log4j.性文件:
# 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。工具.日志记录,或者提供其他提示,一个人:
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.访.服务。日志。LogService et al.
- slf4j
- Log4J
- 公共记录
- java。工具.日志记录
和我可以 只 获得调试,或更低级别的消息显示,如果我运行的访手从一个提示(这是不切实际的什么我的发展中).此外,我不能影响任何其他类型的记录结构通过各种性质的文件。我尝试在这方面似乎可以复盖一个日食的设置。
我们还试图把各种配置文件于上述图书馆在许多地方,包括作为插片断连接到其各自的库的建议 在这里,, ,并且仍然同样的结果发生的情况。
我已经实现了一个自定义LogListener,并追踪对整个路径的一个日志的消息(以及我知道怎么样,反正)与系统。出。释放的,并调试的消息 都 本权利,直到他们是输出任何潜在的记录API我使用,那么它们就会消失。
解决方案
3天之后...
我找到问题所在!有两件事情我需要做的,首先,有一个问题有一个清单。MF文件:
我有下列在清单中。MF为一种捆绑:
Bundle-ClassPath: lib/jena.jar,
.,
org.apache.log4j-1.2.12.jar,
lib/google-collect-snapshot.jar
Import-Package: com.acme.client.translation,
com.acme.translation.interfaces,
com.acme.shared.osgi,
com.acme.utilities
那 应该 有了这样的:
Bundle-ClassPath: lib/jena.jar,
.,
lib/google-collect-snapshot.jar
Import-Package: com.acme.client.translation,
com.acme.client.translation.interfaces,
com.acme.shared.osgi,
com.acme.utilities,
org.apache.log4j
关键的区别是,log4j正在被用作为一个整体,当它应该被用作一束。(我有一个log4j罐子在我的lib dir从当我有预期Log4j到"工作"与访.) 罐子 做 工作排序。它显然发现了一些蚀级log4j配置和使用。由于这只是一个瓶子(不一捆)它没有使用任何片段,可以指定记录的配置,这导致我们其他的事情已经发生:
我需要设立一束片段指定的日志记录的配置。 这个链接 从 VonC 给我的信息做到这一点。这需要做许多事情,不幸的是,包与不正确的清单。MF仍然有log4j罐中指定捆类路径,这似乎复盖的进口包装的清单。
我终于想出了什么事,当我需要记录在另一捆(我刚刚给了在这一点上,回去以使用记录在警告水平高。) 这个新束找不到记录的配置!(所以后来我有三束运行在相同的访的环境中,各有不同log4j行为--一个使用我的片段设置的,另一个采用一些随机的日食日志设置,最后的新束,没有任何记录config。) 详细的比较,这三束揭示的差别明显。MF文件,而现在它们都使用的片段束。
其他提示
这不是一个实际的回答你的问题,但是你可能找到一些线索在这 设定的条款通过ekke.
我想你已经读"使用Log4J在日食Equinox/访":
你有没有推出一个访届会议在控制台模式?
java -jar org.eclipse.osgi_3.3.0.v20070530.jar -console -noExit -clean
这样,你可以试log4j在一个纯粹的访的环境,并检查它的工作。
让我们使用知道如果你找到一个解决方案(布它作为一个答案),和我将表决它;)