当前位置: 首页 > 知识库问答 >
问题:

Log4j 不打印低于 WARN 的级别,也不创建日志文件

太叔昊穹
2023-03-14

我有以下log4j2.properties文件

# Root logger option
log4j.rootLogger=DEBUG, stdout

## Direct log messages to file
log4j.appender.fileout=org.apache.log4j.FileAppender
log4j.appender.fileout.File=/logs/bbt_${current.date}.log
log4j.appender.fileout.ImmediateFlush=true
log4j.appender.fileout.Threshold=info
log4j.appender.fileout.Append=false
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.conversionPattern=%5p | %d | %m%n

# Direct log messages to terminal
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 | %m    %n

以及以下临时测试类

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

public class Temp {
    private static Logger log = LogManager.getLogger();

    public static void main(String[] args) {
        log.error("error");
        log.debug("debug");
        log.info("info");
        log.fatal("fatal");
        log.trace("trace");
        log.warn("warn");
    }
}

然而,当我运行测试类时,我得到了以下输出:

11:32:19.295[main]ERROR Temp-错误

11:32:19.298[主]致命温度-致命

此外,没有创建 /logs/文件夹或日志文件。我认为日志级别的问题可能是由于我在第一个块(为文件)设置了一个treshold,但是注释掉这个块没有任何区别。有人知道这里的原因吗?

共有1个答案

浦德明
2023-03-14

在我看来,您使用了Log4J版本1中的属性文件,但正在尝试使用Log4J版2。

这个版本2的属性文件在类路径中被命名为< code>log4j2.properties,对我很有用:

name=PropertiesConfig

rootLogger.level=debug
rootLogger.appenderRefs=stdout, file
rootLogger.appenderRef.stdout.ref=StandardOutput
rootLogger.appenderRef.file.ref=LogFile

appenders=console, file

## Direct log messages to file
appender.file.type=File
appender.file.name=LogFile
appender.file.fileName=logs/bbt_${current.date}.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%5p | %d | %m%n

# Direct log messages to terminal
appender.console.type=Console
appender.console.name=StandardOutput
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%5p | %d | %m    %n
 类似资料:
  • 我正在尝试创建基于不同级别的“不同”附加器,但到目前为止,我找不到一种隔离日志级别的方法。。。。 我需要一种方法,能够土地只有INFO优先排序的日志被追加。因为INFO级别的日志记录也会显示DEBUG标记的日志记录器...这对我没有帮助。 另一件事是,对于“相同”包,我无法定义不同的日志附加器: 在这里,我得到了如下错误:

  • 问题内容: 我正在尝试配置log4j以将消息记录到文件中。现在,确实使用我提供的名称创建了该文件,但是日志未写入该文件。我的代码: 我文件的内容: 运行此命令时,将在控制台中获得以下输出: 该文件确实在我的主目录中创建。但是它是空的。 有什么想法我做错了吗?我正在使用log4j 1.2.17版。 问题答案: 输出似乎是Java标准日志记录框架(JUL)发出的默认格式。 因此,有两种可能性(想到):

  • 主要内容:如何设置日志级别?,日志级别如何工作?,Log4j 日志级别示例日志级别用于对日志文件中的信息进行分类。但是它们以非常具体的方式进行分类,即按紧急程度分类。该级别允许您管理以下类型的信息: 您可以在搜索过程中过滤您的日志文件。 您可以管理您记录的信息量。 系统中给出的信息量和类型以及事件日志由配置文件中的 log4j 日志级别设置控制。每条日志消息都以消息级别为前缀。 日志级别是org.apache.log4j.Level类的一个实例。 Log4j 具有以下级

  • 当我运行这段代码时,没有任何东西被打印到控制台。我应该如何使用logp?

  • 如何编写一个简单的log4j2.xml文件,将不同级别的日志放入不同的文件中? 例如,我们有错误日志,任何信息日志,我需要将所有错误日志消息推入一个日志文件,所有信息日志消息推入另一个文件。 我怎么做?

  • 我正在尝试配置log4j以将消息记录到文件中。现在,文件确实是用我提供的名称创建的,但是日志并没有写入文件中。我的代码: 我的文件: 运行此命令时,我在控制台中得到以下输出: 文件确实在我的主目录中创建。但它是空的。 知道我做错了什么吗?我使用的是log4j版本1.2.17。