2014-01-10 62 views
3

我有以下簡單的配置爲log4j2剛剛記錄消息到控制檯stdout和文件:配置log4j2用JSON

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
     <RandomAccessFile name="FILE" fileName="app.log"> 
      <PatternLayout> 
       <Pattern>%d %p %c{1.} [%t] %m%n</Pattern> 
      </PatternLayout> 
     </RandomAccessFile> 
     <Console name="STDOUT" target="SYSTEM_OUT"> 
      <PatternLayout pattern="%m%n" /> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <Root level="trace"> 
      <AppenderRef ref="FILE" /> 
      <AppenderRef ref="STDOUT" /> 
     </Root> 
    </Loggers> 
</Configuration> 

它工作正常,但如果我改變JSON配置,如果還是不行,如果有人有任何線索?

{ "configuration": 
{ 
    "appenders": { 
     "RandomAccessFile": { "name": "FILE", "fileName": "app.log", 
      "PatternLayout": { "pattern": "%d %p %c{1.} [%t] %m%n" } 
     }, 
     "Console": { "name": "STDOUT", 
      "PatternLayout": { "pattern": "%m%n" } 
     } 
    }, 
    "loggers": { 
     "root": { "level": "trace", 
      "AppenderRef": { "ref": "STDOUT" }, 
      "AppenderRef": { "ref": "FILE" } 
     } 
    } 
} 
} 

回答

0

您可能已經找到了錯誤。您能否在log4j2問題跟蹤器中提交Jira票證?

4

的log4j2 JSON(或JSON爲此事)不允許兩個「AppenderRef」條目存在,所以你應該使用一個配置更像以下

{ "configuration": 
{ 
    "appenders": { 
     "RandomAccessFile": { "name": "FILE", "fileName": "app.log", 
      "PatternLayout": { "pattern": "%d %p %c{1.} [%t] %m%n" } 
     }, 
     "Console": { "name": "STDOUT", 
      "PatternLayout": { "pattern": "%m%n" } 
     } 
    }, 
    "loggers": { 
     "root": { "level": "trace", 
      "AppenderRef": [ 
       { "ref": "STDOUT" }, 
       { "ref": "FILE" } 
      ] 
     } 
    } 
} 
} 

您還可以使用「附加目的地-ref'而不是AppenderRef