使用Log4J2

时间:2016-11-09 16:19:40

标签: logging log4j2

我已经看过有关此事的现有问题,但我仍无法解决问题。这是我的POM,包含所有log4j2依赖项:

<dependencyManagement>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-bom</artifactId>
                <version>2.7</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

<dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
</dependency>

我的log4j2.properties文件的结构如下:

name=PropertiesConfig
property.filename = logs
appenders = console, file

appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

rootLogger.level = debug
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT

appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=target/myLog.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

最后,我在我的测试类中创建了记录器,如下所示:

private Logger LOG = LogManager.getLogger(TestClass.class.getName());

虽然我可以将所有日志输出到控制台,但我只返回/ target下的空文件(如指定的那样)。

你能帮忙吗?你觉得我的属性文件中有什么根本错误吗?

谢谢,

予。

3 个答案:

答案 0 :(得分:1)

所以,我设法将日志输出到文件和控制台:

appender.file.type = File
appender.file.name = file
appender.file.fileName=target/myLog.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n

appender.out.type = Console
appender.out.name = out
appender.out.layout.type = PatternLayout
appender.out.layout.pattern = %d [%-15.15t] %-5p %-30.30c{1} - %m%n
rootLogger.level = all
rootLogger.appenderRef.file.ref = file
rootLogger.appenderRef.file.ref = out

答案 1 :(得分:0)

对我来说,当我更正enum class Color { @Keep RED, @Keep GREEN, @Keep BLUE } 的{​​{1}}键中的软件包名称时,这里提到的确切问题已解决。

示例:

logger.file.name

答案 2 :(得分:0)

空的日志文件表明配置文件有问题。就我而言,我的日志级别无效。例如,我有:

<Loggers>
    <Root level="fine">
        <AppenderRef ref="Console" />
        <AppenderRef ref="RollingFile" />
    </Root>

但是 fine 不是有效的标准级别,当我将其更改为 info 时它起作用了。如 documentation 所述,日志级别应该是以下级别之一:

  • 关闭
  • 致命
  • 错误
  • 警告
  • 信息
  • 调试
  • 跟踪
  • 全部