另外一个 appender 是 A2,它是一个 PluginLogAppender
类,只能将它添加到记录器 "helloplugin" 中,因此 TestPluginLog 没有使用它。否则,在 "Error View" 窗口中 "TestPluginLog" 就会有两项:一个来自于 Eclipse,另外一个来自于 com.tools.logging。您可以自己做个实验,然后就会明白我的意思了。只需将 A2 添加到 log4j.rootCategory 中并删除 log4j.logger.helloplugin 所在的那个行即可。
清单 8 显示了在点击 "sample menu" 并显示消息框之后 ${workspace}/.metadata/.plugins/HelloPlugin/helloplugin.log 的内容。注意 TestPluginLog Eclipse 日志是如何写入最后一行中的。通过将您自己的日志和 Eclipse 插件日志写入一个输出文件中,可以保留日志事件的序列。
清单 8. helloplugin.log
INFO main helloplugin.actions.SampleAction - starting constructor.
INFO main helloplugin.actions.SampleAction - ending constructor.
WARN main helloplugin.actions.SampleAction - init
WARN main helloplugin.actions.SampleAction - run method
WARN main TestPluginLog - TestPluginLog - 0 - Logging using the Eclipse API.
结束语
本文介绍了两种改进 Eclipse 日志功能的方法。一种方法是在插件中使用 com.tools.logging,这样就可以使用 Log4j 中所有有用的特性;如果您愿意的话,它依将是 Eclipse 日志框架的一部分。另外一种方法与一个插件相关,该插件并不了解 Log4j,但即时只使用 Eclipse 日志 API,也可以对其日志输出进行配置。
实际上,您并不需要使用 com.tools.logging。现在,您可以展开示例代码,并将其作为一个单独的 jar 文件加入您自己的插件中。当然,不要忘记了 Log4j 的 jar 文件。
插件是使用新的 OSGI 创建的。所有的代码都是使用 Eclipse 3.0 Release Candidate 1、Sun Java 2 SDK 1.4.2 和 Log4j 1.2.8 进行开发的,并在这些环境中进行了测试。在可以下载的代码中,不包括 log4j-1.2.8.jar 文件。如果您要下载这些代码,应该从 Apache 的 Log4j 中获得这个 jar 文件,并在 com.tools.logging 项目和 com.tools.logging_1.0.0 插件目录中包含该文件。