You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为应用添加log4j遇日志输出问题:警告信息无法打印

看起来你遇到的问题是log4j的warn日志没有输出到控制台和文件,主要是因为你的配置里缺少了几个关键设置项,我帮你调整一下配置,确保info、warn、error级别的日志能正常输出:

调整后的完整log4j配置
# Root logger: 指定最低级别为INFO,同时输出到stdout和file
log4j.rootLogger=INFO, stdout, file

# 控制Hibernate日志级别为INFO,避免冗余日志
log4j.logger.org.hibernate=INFO

# Console Appender配置:输出到IntelliJ控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
# 指定控制台输出的最低日志级别为INFO
log4j.appender.stdout.Threshold=INFO
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

# File Appender配置:输出到atp.log文件
log4j.appender.file=org.apache.log4j.RollingFileAppender
# 指定日志文件路径(相对路径会生成在项目根目录)
log4j.appender.file.File=atp.log
# 单个日志文件最大大小,避免文件过大
log4j.appender.file.MaxFileSize=10MB
# 保留的备份日志文件数量
log4j.appender.file.MaxBackupIndex=5
# 指定文件输出的最低日志级别为INFO
log4j.appender.file.Threshold=INFO
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

关键问题说明

  • Root Logger缺少级别:你原来的log4j.rootLogger= stdout, file没有指定日志级别,log4j默认根级别是DEBUG,但未明确配置时可能导致级别过滤异常。加上INFO后,根logger会捕获INFO及以上(INFO、WARN、ERROR)的日志。
  • Appender未设置Threshold:每个appender需要通过Threshold指定自己输出的最低级别,确保控制台和文件都只输出你需要的级别。
  • PatternLayout配置不完整:你原来的配置里log4j.appender.stdout.layout=org.apache.log4j.PatternLayout后面没有定义日志格式,补全后日志会更清晰易读。
  • File Appender配置缺失:你原来只提到了file appender,但没有具体的实现类和文件路径等配置,这里用RollingFileAppender(滚动文件追加器)比普通FileAppender更实用,会自动分割大文件。

代码使用示例

确保你在代码中正确获取Logger并输出日志:

import org.apache.log4j.Logger;

public class YourServiceClass {
    // 获取当前类的Logger实例
    private static final Logger logger = Logger.getLogger(YourServiceClass.class);

    public void doSomething() {
        // 输出不同级别的日志
        logger.info("业务操作开始");
        logger.warn("注意:当前操作可能存在风险");
        try {
            // 模拟异常
            int i = 1 / 0;
        } catch (Exception e) {
            logger.error("操作失败", e);
        }
    }
}

依赖检查(Maven为例)

如果用Maven管理项目,确保pom.xml中包含log4j的依赖:

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version> <!-- 可根据需要选择合适的1.x版本 -->
</dependency>

内容的提问来源于stack exchange,提问作者user9729328

火山引擎 最新活动