【问题标题】:Using log4j in maven project在 maven 项目中使用 log4j
【发布时间】:2012-11-09 04:47:18
【问题描述】:

我无法创建日志文件

我在我的 pom.xml 中添加了

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.16</version>
</dependency>

然后我将 log4j.properies 放在资源文件夹下

# Define the root logger with appender file
log = /home/soumya/log4j
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=${log}/log.out

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

然后在我的 java 代码中使用

public class Test
{
static Logger logger = Logger.getLogger(Test.class.getName());
 public void testLog(){
 logger.info("testing ..!!!");
}

但运行时出现以下错误,并且未创建日志文件!!!

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation

我的 Maven 版本是 Apache Maven 2.2.1 (rdebian-6),我使用的是 eclipse Indigo 感谢任何帮助

【问题讨论】:

    标签: java maven


    【解决方案1】:

    SLF4j 库需要手动包含在你的 pom.xml 中

            <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                    <version>1.6.1</version>
            </dependency>
            <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>jcl-over-slf4j</artifactId>
                    <version>1.6.1</version>
            </dependency>
            <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>1.6.1</version>
            </dependency>
    

    【讨论】:

    • jcl-over-slf4j 有什么用?如果我不包括它,结果是什么?
    • 其他一些第三方库可能会使用 JCL(遗留代码)。你可以排除它。只是如果某些第三方库不生成日志,它可能会使用 JLC。
    • 通过包含这些依赖项,错误消失了。但仍然没有创建日志文件!!!。我应该怎么做才能让日志消息记录到文件中。我尝试在我的手动添加 log4j构建路径,但它也没有工作:(
    • 确保方法 testLog() 被执行(使用 system.out.println 确定)。设置 log4j.appender.FILE.File 使用完整路径 /home/soumya/log4j/log.out 文件可能被创建但在不同的文件夹中。
    • 我确定 testLog() 正在执行我使用 system.out.println 仔细检查了它。通过添加 log4j.rootLogger =DEBUG, S, R, FILE 并在 g4j.appender.FILE 中使用完整路径,编辑 log4j.properties 以将日志重定向到 cosole。但没有希望。由于日志没有登录到控制台,我可能会丢失一些配置
    【解决方案2】:

    所以,我确实有这样的

    在 pom.xml 中导入依赖

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
            <version>1.7.30</version>
        </dependency>
    

    我在class.java中导入后,有这样的

     import org.apache.logging.log4j.LogManager;
     import org.apache.logging.log4j.Logger;
    

    在我这样做之后,在类中创建变量并在您的代码中使用

    final Logger logger = (Logger) LogManager.getLogger(TechLearningv3Application.class);
    
    logger.info("Clientes Encontrados com função findAll():");
    

    在此处打印此项目

    参考 - https://www.sentinelone.com/blog/maven-log4j2-project/

    【讨论】:

      猜你喜欢
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-24
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多