首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将log4j配置为在登录模式之前调用静态函数

将log4j配置为在登录模式之前调用静态函数
EN

Stack Overflow用户
提问于 2016-09-06 20:12:36
回答 2查看 497关注 0票数 1

是否可以将log4j配置为在pattern layout中调用静态函数?另外,如何将log4j2配置为以json格式打印日志?我已经试过了

代码语言:javascript
复制
<JSONLayout complete="true" compact="false"/>

我完整的log4j2.xml文件是这样的:

代码语言:javascript
复制
<?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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-07 01:32:43

您可以创建一个Log4j 2 PatternLayout转换器插件。转换器是一个小类,它传递一个LogEvent并将一些文本放入StringBuilder中。例如,%m的转换器从LogEvent获取消息并将其附加到StringBuilder。

自定义转换器可以有任何模式,假设您使用% static,并且在实现中调用static方法。

然后,如果您配置了<PatternLayout pattern ="%d %level %m%ex%n%STATIC" />,将为每个事件调用您的转换器。

票数 2
EN

Stack Overflow用户

发布于 2016-09-06 21:04:39

取决于调用函数的目的,如果要添加一些额外信息,则可以自己创建自定义布局,也可以在项目中使用第三方布局库,例如。

https://github.com/logstash/log4j-jsonevent-layout

它将以json格式打印日志,并提供向json添加自定义字段的功能。

它通常与logstash和kibana一起使用,但也可以单独使用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39348779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档