使用log4j2,我想替换日志消息中的一些字符串(比如用bar替换foo)。在xml配置中,我可以使用以下配置,它可以正常工作。
<Appenders>
<Console name="A1" target="SYSTEM_OUT">
<PatternLayout pattern="[%d{HH:mm:ss}] %m%n">
<replace regex = "foo" replacement="bar"/>
</PatternLayout>
</Console>
</Appenders>
但我不得不在项目中使用属性文件,而不是使用XML,所以我尝试了以下方法
appender.A1.type = Console
appender.A1.name = A1
appender.A1.layout.type = PatternLayout
appender.A1.layout.pattern = [%d{HH:mm:ss}] %m%n
# Probably BAD code begin
appender.A1.layout.replace.regex = foo
appender.A1.layout.replace.replacement = bar
# Probably BAD code end
我得到了这样的错误:
Exception in thread "main" org.apache.logging.log4j.core.config.ConfigurationException: No type attribute provided for component replace
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.createComponent(PropertiesConfigurationBuilder.java:334)
...
如何在属性文件和log4j2中表示replace,是否可以将xml配置中的所有内容转换为属性配置?我使用的是log4j-api-2.14.0。jar和log4j-core-2.14.0。罐子
谢谢提前!
编辑:我以前也尝试过replace{pattern}{regex}{substitution}
。我认为这与replace参数不同。说模式是
appender.A1.layout.pattern = [%d{HH:mm:ss}][%C::%M] %replace{%m}{foo}{bar}%n
我会得到
[09:28:07][com.foo.MyApp::main] 111 bar 222
但我想得到的是
[09:28:07][com.bar.MyApp::main] 111 bar 222
使用上述XML配置,我可以得到正确的结果,但我不知道如何将其转换为属性配置。
对于正则表达式替换,请使用replace{pattern}{regex}{substitution}
pattern<代码>追加器。A1。布局替换*
必须删除。
appender.A1.type = Console
appender.A1.name = A1
appender.A1.layout.type = PatternLayout
appender.A1.layout.pattern = [%d{HH:mm:ss}] %replace{%m}{foo}{bar}%n
# whole line
appender.A1.layout.pattern = %replace{[%d{HH:mm:ss}] %m%n}{foo}{bar}
Log4j2-布局
替换{pattern}{regex}{substitution}
将正则表达式regex的出现替换为模式求值产生的字符串中的替换。例如,“%替换{%msg}{\s}{}”将删除事件消息中包含的所有空格。
模式可以是任意复杂的,尤其可以包含多个转换关键字。例如,“%replace{%logger%msg}{.}”{/}“将用正斜杠替换记录器或事件消息中的所有点。
如何在propterties文件中的log4j2中创建keyvaluepair? 我知道在log4j Version1中是这样做的: ?
如果我在application.properties文件中指定“Logging.config=src/main/resources/log4j2.properties”,日志记录就可以正常工作。 spring boot自动检测log4j2.properties而不需要在application.properties文件中指定“logging.config=src/main/resources/log
我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)。 这是我的log4j2.xml: 我尝试了以下方法,但没有任何效果: 移动log4j2.xml文件,使其位于默认包中。 将log4j2.xml文件移动到项目中的任意位置 将log4j2.xml文件命名为log4j.xml 在项目中创建一个文件夹,将log4j2.xml文件放
我是春靴的新手。我有一个跑步Spring靴项目。我想使用log4j2(由于项目限制,我必须使用log4j2本身)将不同级别的所有日志重定向到一个名为'test.log'的日志文件。 ---我的测试API的控制器也有以下测试日志行: ---在我的理解中,我已经在代码中包含了所有必需的内容。但是我面临着这个问题--当我使用API时,只有hibernate调试记录器被添加到test.log中;我在con
我正在尝试用log4j2日志功能配置Spring(非引导)MVC项目。目前我已经放置了所有文件位于不在类路径中的位置。我使用了注释来进行此配置。我收到下面的消息 错误状态记录器未找到Log4j 2配置文件 使用默认配置(仅将错误记录到控制台)或用户以编程方式提供的配置 设置系统属性“log4j2”。“调试”以显示Log4j 2内部初始化日志 见https://logging.apache.org/
1)我想每天使用log4j2.xml.生成日志文件,我使用RollingFile appender标记来实现同样的功能。但是,它将日志附加在同一文件上。 2)下面是我们在log4j.xml中使用的类别标签,我想知道在log4j2.xml中类别标签的等价物是什么? 3) 如何使用log4j2中的所有属性定义snmptrappender?