如何在Maven的RCP应用程序中使用log4j?

时间:2016-01-13 13:09:03

标签: java maven log4j swt eclipse-rcp

我正在开发一个具有Maven性质的小型RCP项目,现在我希望添加log4j依赖项。
为此,我所做的是:

  1. 在项目内的bin文件夹下添加了log4j.properties。 bin是生成所有类文件的文件夹。该文件如下所示:
  2. # Root logger option
    log4j.rootLogger=DEBUG, stdout, file
    
    # Redirect log messages to console
    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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    
    # Redirect log messages to a log file, support file rolling.
    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=C:\\Srijani\\Personal Workspace\\RCP\\EditorApp\\log\\Application.log
    log4j.appender.file.MaxFileSize=5MB
    log4j.appender.file.MaxBackupIndex=10
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    
    1. 在pom.xml
    2. 中添加了此依赖项
      <dependencies>
         <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
         </dependency>
        </dependencies>
      
      1. 在java代码中我这样写:
      2. import org.apache.log4j.Logger;
        
        import com.app.editor.constants.Constants;
        
        public class DatabaseConnection {
            final static Logger logger = Logger.getLogger(DatabaseConnection.class);
        }
        

        编译时,此代码不会产生任何问题。但是,在运行代码时,我收到了这个错误:

        !ENTRY org.eclipse.e4.ui.workbench 4 0 2016-01-13 13:50:35.397
        !MESSAGE Unable to create class 'org.eclipse.ui.internal.e4.compatibility.CompatibilityView' from bundle '55'
        !STACK 0
        org.eclipse.e4.core.di.InjectionException: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
            at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:62)
        

        注意:我没有向MANIFEST.MF和build.properties添加任何内容。 请帮忙!

        由于

        更新:遇到问题但不确定如何解决。当我手动下载jar并在类路径中设置它时,我可以在Eclipse RCP中使用log4j。但是,当我尝试通过Maven下载它时,它无法正常工作。知道为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

如果将Maven与Eclipse RCP结合使用,则应考虑使用Tycho [1]。 Tycho使用MANIFEST优先方法,因此您无需编辑pom文件。

此外,您应该将log4j.properties放入一个片段,并将log4j-bundle作为host-plugin。

[1] https://eclipse.org/tycho/

答案 1 :(得分:0)

我希望在这个网站上解释清楚。这会对你有所帮助。

http://www.mkyong.com/logging/log4j-hello-world-example/

我真诚的建议是,在项目实施之前尝试创建一个示例示例。如果成功,您可以将其应用到项目中。