是否可以将log4j配置为在pattern layout中调用静态函数?另外,如何将log4j2配置为以json格式打印日志?我已经试过了
<JSONLayout complete="true" compact="false"/>我完整的log4j2.xml文件是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="log-path">logs</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<JSONLayout complete="true" compact="false"/>
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"/>
</Console>
<RollingFile name="trace-log" fileName="${log-path}/ltlogs-trace.log"
filePattern="${log-path}/ltlogs-%d{yyyy-MM-dd}.log">
<JSONLayout complete="true" compact="false"/>
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
<RollingFile name="error-log" fileName="${log-path}/lt-logs.log"
filePattern="${log-path}/lt-logs-%d{yyyy-MM-dd}.log">
<JSONLayout complete="true" compact="false"/>
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<Logger name="com.limetray.helper" level="debug" additivity="false">
<appender-ref ref="trace-log" level="debug"/>
<appender-ref ref="error-log" level="error"/>
<appender-ref ref="console-log" level="debug"/>
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="console-log"/>
</Root>
</Loggers>
</Configuration>发布于 2016-09-07 01:32:43
您可以创建一个Log4j 2 PatternLayout转换器插件。转换器是一个小类,它传递一个LogEvent并将一些文本放入StringBuilder中。例如,%m的转换器从LogEvent获取消息并将其附加到StringBuilder。
自定义转换器可以有任何模式,假设您使用% static,并且在实现中调用static方法。
然后,如果您配置了<PatternLayout pattern ="%d %level %m%ex%n%STATIC" />,将为每个事件调用您的转换器。
发布于 2016-09-06 21:04:39
取决于调用函数的目的,如果要添加一些额外信息,则可以自己创建自定义布局,也可以在项目中使用第三方布局库,例如。
https://github.com/logstash/log4j-jsonevent-layout
它将以json格式打印日志,并提供向json添加自定义字段的功能。
它通常与logstash和kibana一起使用,但也可以单独使用。
https://stackoverflow.com/questions/39348779
复制相似问题