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

Log4j中%replace使用异常:修改配置后日志无法输出

你的问题根源出在依赖版本不匹配和配置文件格式混用两个方面,导致%replace语法不生效甚至日志完全无法输出,具体解决步骤如下:

一、修复依赖冲突

你当前使用的slf4j-log4j12是SLF4J绑定Log4j 1.x的适配包,但引入的log4j-core是Log4j 2.x版本,二者完全不兼容。需要替换为Log4j 2.x对应的SLF4J绑定包:

替换原依赖中的slf4j-log4j12为log4j-slf4j-impl,同时确保彻底排除Log4j 1.x相关依赖:

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.20.0</version> <!-- 版本需与log4j-core严格一致 -->
</dependency>
<!-- 全局排除Log4j 1.x,避免其他依赖间接引入 -->
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

二、修正配置文件格式

Log4j 2.x使用的配置文件名是log4j2.xml(而非Log4j 1.x的log4j.xml),且配置结构与1.x完全不同。你之前混用了1.x的<layout class="org.apache.log4j.PatternLayout">和2.x的%replace语法,导致配置直接失效。

正确的Log4j 2.x配置示例(实现你需要的字符串替换):

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%5p %d{ISO8601} [%t][%x] %c - %replace{%m}{&lt;Name1&gt;(?:.+?)&lt;/Name1&gt;}{&lt;Name1&gt;*****&lt;/Name1&gt;}%n"/>
        </Console>
        <!-- 若有文件输出Appender,配置逻辑一致 -->
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

配置要点说明:

  • %replace是Log4j 2.xPatternLayout的原生语法,需确保使用Log4j 2.x的配置体系
  • 调整%replace的作用范围为%m(日志消息内容),避免将换行符%n纳入替换逻辑
  • 你使用的正则表达式<Name1>(?:.+?)<\/Name1>是正确的非贪婪匹配,能精准替换单个<Name1>标签内的内容

三、验证生效

  1. 删除旧的log4j.xml配置文件,确保项目加载的是log4j2.xml
  2. 启动项目后,打印包含<Name1>xxx</Name1>的日志,检查是否被替换为<Name1>*****</Name1>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:17:06