MAVEN实施SLF4J和LOG4J;应用

时间:2015-09-16 19:28:42

标签: java maven logging log4j slf4j

我查了这个问题: SLF4J and Log4j 2 binding Maven dependency

似乎我有一个类似的问题。

但他们使用: log4j-slf4j-impl 我使用 slf4j-log4j (见pom.xml)

符合: documentation SLF4J - binding LOG4J

source

[NETBEANS]

这是“ TestLogger ”类并使用SLF4J:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestLogger {

private static Logger logger = LoggerFactory.getLogger(TestLogger.class);

public static String name = "World";

public static void main(String[] args) {   
    logger.info("Hello {}", name);
    System.out.println("Test");
}
}

我从LOG4J中得到这些错误(所以绑定似乎没问题):

log4j:WARN No appenders could be found for logger (TestLogger).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

在“ TestLogger ”类中的这个项目中,SLF4J和LOG4J之间存在绑定,因为错误是由LOG4J引起的,我们导入SLF4J

pom.xml [仅依赖部分]:

    <!--
        slf4j-api   - local
        slf4j-log4  - local
        log4j
    -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.12</version>
        <type>jar</type>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
        <type>zip</type>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.12</version>
    </dependency>

dependencies

这是 log4j.properties 文件,这个文件在没有MAVEN的情况下运行良好(在具有相同类的其他项目中)

log4j.properties 位于默认包中。

# Root logger option
log4j.rootLogger=INFO, stdout, file
# Direct log messages to stdout
# 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=[%-5p]  %d{yyyy-MM-dd HH:mm:ss} - %c{10}, line %L  -  [%10.10t]%n >> %m%n
# Redirect log messages to a log file, support file rolling.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log4j-homeauto.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]  %30.30c %L - %m%n  

老实说问题对我很清楚,但在阅读了在线反馈后,我又添加了一个 log4j.xml 默认包。 希望这能解决我的问题。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
  </appender> 

  <appender name="LOG" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="example.log"/>
    <param name="MaxFileSize" value="100KB"/>
    <!-- Keep one backup file -->
    <param name="MaxBackupIndex" value="1"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <!-- Pattern to output the caller's file name and line number -->
      <param name="ConversionPattern" value="%5p [%t] (%F:%L) - %m%n"/> 
    </layout> 
  </appender>

</log4j:configuration>
  <root> 
    <priority value ="debug" /> 
    <appender-ref ref="console" />
    <appender-ref ref="LOG" />  
  </root>

</log4j:configuration>

就像我已经说过的那样,我在没有MAVEN的其他项目中也使用过这个课程,并且工作正常。 作为另一项测试,我在两个项目中创建了一个类 TestLoggerLOG4J LOG4J似乎在MAVEN中有所不同......它找不到既不属性,也不 xml文件 (如果没有MAVEN,我不知道需要哪一个,属性文件很好)

import org.apache.log4j.Logger;


public class TestLoggerLOG4J {

static Logger log = Logger.getLogger("file");

    public static String name = "World";

    public static void main(String[] args) {

        log.info("This is a test {}");
        System.out.println("Test");

    }

}

** s o l u t i o ** **

感谢** @Tunaki **

您需要将此文件放在src / main / resources

我是通过命令行(linux终端)完成的,最后我在项目中找到了它。

还有其他方法吗?您是否有解决方案可以避免此类问题? 为什么MAVEN不这样做?

enter image description here

0 个答案:

没有答案