2015-04-01 15 views
14

Có thể cho phép log4j xuất bản ghi ở định dạng JSON bằng cách chỉ thay đổi tệp cấu hình log4j.properties.xml không?
Tôi sử dụng ứng dụng cũ sử dụng log4j 1.2. Tôi chỉ thấy bố cục XML nhưng không có bố cục JSON.Log4j có hỗ trợ định dạng JSON không?

Trả lời

18

chỉ cần sử dụng buildin PatternLayout là ok:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.encoding=UTF-8 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern={"debug_level":"%p","debug_timestamp":"%d{ISO8601}","debug_thread":"%t","debug_file":"%F", "debug_line":"%L","debug_message":"%m"}%n 

ra sẽ đặt như:

{ 
    "debug_level" : "INFO", 
    "debug_timestamp" : "2016-05-26 16:37:08,938", 
    "debug_thread" : "main", 
    "debug_file" : "TestLogOutPut.java", 
    "debug_line" : "316", 
    "debug_message" : "hello i am a log message" 
} 
+0

tuyệt vời ... làm việc như một nét duyên dáng .. –

+9

này sẽ phá vỡ nếu thư chứa ' "'. –

+0

Điều này không thể hoạt động khi thông báo lỗi chứa "\ n" v.v. – xuanyuanaosheng

1

Có thể. Take a look at this link Nó có thể tạo ra

{ 
    "timestamp":1352412458890, 
    "date":"Nov 8, 2012 10:07:38 PM", 
    "hostname":"michael1", 
    "username":"michael", 
    "level":"INFO", 
    "thread":"main", 
    "classname":"uk.me.mjt.log4jjson.SimpleJsonLayoutTest", 
    "filename":"SimpleJsonLayoutTest.java", 
    "linenumber":25, 
    "methodname":"testDemonstration", 
    "message":"Example of some logging" 
} 
15

này là bố trí JSON chính thức

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

1) Thêm sự phụ thuộc maven https://mvnrepository.com/artifact/net.logstash.log4j/jsonevent-layout

<dependency> 
    <groupId>net.logstash.log4j</groupId> 
    <artifactId>jsonevent-layout</artifactId> 
    <version>1.7</version> 
</dependency> 

2) Thêm cấu hình để log4j.properties tập tin của bạn

log4j.rootCategory=WARN, RollingLog 
log4j.appender.RollingLog=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.RollingLog.Threshold=TRACE 
log4j.appender.RollingLog.File=api.log 
log4j.appender.RollingLog.DatePattern=.yyyy-MM-dd 
log4j.appender.RollingLog.layout=net.logstash.log4j.JSONEventLayoutV1 
Các vấn đề liên quan