2016-09-06 51 views
0

是否可以配置log4j以調用模式佈局中的靜態函數?我們如何配置log4j2以json格式打印日誌?我已經試過這配置log4j在登錄模式之前調用靜態函數

<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> 
+0

刪除,好像是重寫你的 kuhajeyan

+0

log4j還通過AppenderSkeleton提供了附加功能,看看這篇文章http://stackoverflow.com/questions/6072389/how-to-create-a-own-附加器功能於log4j的 – calvin

回答

1

您可以創建一個Log4j 2 PatternLayout轉換器插件。轉換器是一個傳遞LogEvent並將一些文本放入StringBuilder的小類。例如,%m的轉換器從LogEvent獲取消息並將其附加到StringBuilder。

自定義轉換器可以有任何模式,假設您使用%STATIC,並且在實現中調用靜態方法。

然後,如果您配置<PatternLayout pattern ="%d %level %m%ex%n%STATIC" />您的轉換器將被稱爲每個事件。

0

你爲什麼要調用一個函數,如果是再加入一些額外的信息,你要看的目的可以自己創建自定義佈局,也可以在項目中使用第三方佈局庫,例如。

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

這將打印在日誌中JSON格式,還提供了自定義字段添加到JSON的能力。

它通常與logstash和和kibana一起使用,但也可以單獨使用。