如何在 Eclipse RCP 应用程序中正确设置 Logback?

use*_*108 4 eclipse eclipse-rcp logback slf4j

我花了 2 或 3 天的时间试图让 Logback 在我的新 Eclipse RCP 项目中正常工作。(我是第一次尝试 RCP,但在其他 java 项目中使用过 logback)。

我向大家提出的问题是:“Eclipse RCP (E4) 是否有一个简单的插件来启用 Logback 日志记录?是否应该使用此处的插件 ( http://logback.qos.ch/p2/ )?如果有这不是一个简单的插件,启用此日志记录的正确方法是什么?”

我已多次阅读此页面(http://devblog.virtage.com/2012/07/logback-and-eclipse-attaching-logback-xml/),它似乎很有希望,但我一直无法获得让它工作。

ctg*_*ctg 5

我已经成功获得了 logback 的工作配置,它适用于 RCP 3.x 和 4.x。我正在使用 Tycho 进行构建,并使用功能和产品来组装应用程序(有关详细信息,请参阅Vogella 教程)。步骤是:

  1. 在您定义的插件(通常是包含您的应用程序的插件)中,添加对 ch.qos.logback.classic 和 ch.qos.logback.core 以及 org.slf4j.api 的依赖项。所有其他插件只需要依赖 org.slf4j.api 来访问记录器。
  2. 在包含定义插件的功能中,在 Included PLug-ins 页面上添加 ch.qos.logback.slf4j 片段。如果没有这个,SLF4J 将无法在已部署的产品中找到 Logback。
  3. 在类路径(src/main/resources,如果您使用的是 Tycho/Maven)的某个定义插件中创建一个 logback.xml 文件。
  4. 对于 e4 应用程序,添加生命周期管理器,并在其 @ProcessAdditions 方法中初始化 Logback:

    ILoggerFactory iLoggerFactory = LoggerFactory.getILoggerFactory();  
    LoggerContext loggerContext = (LoggerContext) iLoggerFactory;  
    loggerContext.reset();  
    JoranConfigurator configurator = new JoranConfigurator();  
    configurator.setContext(loggerContext);  
    try {  
      configurator.doConfigure(getClass().getResourceAsStream("/logback.xml"));  
    } catch (JoranException e) {  
      throw new IOException(e.getMessage(), e);  
    }  
    
    Run Code Online (Sandbox Code Playgroud)
  5. 对于 Eclipse 3.x 应用程序,上述代码将进入start()应用程序插件的 Activator 方法。

您可能想要使用文件追加器,因为除非您使用 -consoleLog 作为程序参数,否则不会显示标准输出。如果将文件位置指定为<file>${user.dir}/path/to/file</file>,则该文件将在应用程序安装目录中创建。通常,您会使用工作区元数据目录,以便它位于 Eclipse 日志旁边,例如<file>${user.dir}/workspace/.metadata/rcp.log</file>.