You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

log4j每条日志末尾自动添加“sg”,如何解决该问题?

搞定Log4j日志末尾莫名出现"sg"的问题

嘿,我来帮你排查这个奇怪的小问题!从你给的代码和日志示例来看,这个多余的"sg"大概率不是Log4j本身的锅,咱们一步步来找原因:

先从最可能的地方查起:日志消息本身

你看示例里的10:04:21.854 [main] System: Activated Botsg,会不会是你输出日志的时候,消息本身就带了"sg"?比如写代码时手滑把"Activated Bot"写成了"Activated Botsg",或者拼接字符串时某个变量的值刚好是"sg"?先去翻一翻输出这条日志的代码,确认原始消息有没有问题,这是最常见的原因哦。

排查getLogFile()方法的潜在影响

虽然看起来和文件名没关系,但保险起见,可以临时把getLogFile()改成返回一个固定路径(比如"test.log"),测试一下日志还会不会出现"sg"。毕竟万一这个方法里有什么奇怪的输出,不小心混到日志里了呢?不过这种情况概率很低,但排除一下总没错。

检查Appender是否重复添加

你的createLogger()是静态方法,会不会被多次调用?如果同一个Logger被重复添加了Appender,可能会导致消息被重复输出,而其中某一次的消息带了"sg"。可以在添加新Appender之前先清空旧的,避免重复:

// 添加新Appender前先清空所有旧的
logger.removeAllAppenders();
logger.addAppender(new ConsoleAppender(layout));
// 再添加FileAppender...

另外也可以加上logger.setAdditivity(false);,防止父Logger的Appender重复输出日志。

核对PatternLayout格式是否有误

你的格式是"%d{HH:mm:ss.SSS} [%t] %msg%n",这个本身是对的——%msg输出消息,%n是换行。不过还是再仔细看一眼,有没有不小心把"sg"写到格式串里了?比如是不是写成了"%d{HH:mm:ss.SSS} [%t] %msg%nsg"?虽然你代码里写的是对的,但有时候手滑打错字也很正常嘛。

确认Log4j版本兼容性

你说用了Maven最新版的Log4j,这里要注意:Log4j 1.x和2.x的API完全不一样!你的代码用的是org.apache.log4j.Logger这些1.x的类,要是Maven依赖不小心混了2.x的包,可能会出现奇怪的兼容性问题。确认一下你的依赖是纯1.x的,比如:

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

如果是想用Log4j 2.x的话,代码写法得全部换掉,所以先确保版本和代码对应上。

快速测试排除干扰

写个极简的测试代码,把其他因素都排除掉:

import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.ConsoleAppender;

public class TestLogFix {
    private static Logger createLogger(){
        Logger logger = Logger.getLogger(TestLogFix.class);
        PatternLayout layout = new PatternLayout("%d{HH:mm:ss.SSS} [%t] %msg%n");
        logger.removeAllAppenders();
        logger.addAppender(new ConsoleAppender(layout));
        return logger;
    }

    public static void main(String[] args) {
        Logger logger = createLogger();
        logger.info("System: Activated Bot");
    }
}

运行这个测试类,如果日志输出正常,那问题肯定出在你原来的代码里(比如getLogFile()或者日志消息);如果还是出现"sg",那可能是IntelliJ控制台的小bug?不过这个概率极低啦。


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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:08:47