【问题标题】:Not able to generate logs from maven project无法从 Maven 项目生成日志
【发布时间】:2017-11-27 14:24:39
【问题描述】:

我创建了一个包含测试用例及其相应功能的 maven 项目。验证检查的所有功能都放在 src/main/java 下。测试用例也是 src/test/java 的一部分。我已将其放在 src/main/resources 中的 log4j.properties 下方。

# Root logger option
log4j.rootLogger=info, file,stdout

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/tmp/reports/logs/log.out
log4j.appender.file.MaxFileSize=10MB
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

#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

此外,在我添加的每个类文件中,以下行以及以下导入:

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

初始化日志:

static Logger log = LoggerFactory.getLogger(<class name>.class);

我正在使用log.info("") 创建日志。

另外,在 pom.xml 中,添加了以下依赖项:

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.25</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.25</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.25</version>
    </dependency>

但我看到日志没有在控制台和文件/tmp/reports/logs/log.out 中生成,但日志文件/tmp/reports/logs/log.out 已成功创建,但没有附加日志,控制台中也没有生成日志。

我确实在控制台上看到了日志,但它们绝对不是log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 格式。

我假设它们是在控制台上生成的,因为我已经导入了与 log4j 相关的 jar。

有人可以帮忙吗?

【问题讨论】:

  • 如果只做测试用例的话,用slf4j-simple岂不是更方便?
  • 我也用过slf4j-simple jar,但是还是没有生成日志
  • slf4j-simple 不是用来生成日志的,它是用来将你的日志语句输出到标准输出的,这样你就可以在单元测试的过程中看到发生了什么,仅此而已。
  • 好的,但是在这种情况下,它不仅仅是单元测试用例。需要保存日志以了解不顺利的地方。我还生成每次运行结束的报告,需要在错误/异常上说“查看日志以获取更多信息”。所以,我需要将它们记录在某个地方。除了生成日志(这实际上很重要)之外,一切正常
  • 我不是 Log4J 1.x 配置方面的专家,所以我无法帮助您。只是在大多数情况下,我看到测试日志只是简单地写入标准输出并由构建服务器(例如,Jenkins)保留,因此找出问题所在只需滚动浏览 Jenkins 输出即可。也就是说:如果这对您的用例来说还不够,那么请忽略我的 cmets。

标签: java logging log4j slf4j


【解决方案1】:

我使用 Log4j 记录器而不是 slf4j 并生成了日志。它是一种解决方法。

import org.apache.log4j.Logger;

static Logger log = Logger.getLogger(KNMIRules.class);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2019-05-30
    • 1970-01-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多