2011-01-07 34 views
13

Tôi hiện đang có bố cục mẫu bên dưới trong log4j. Tôi muốn thêm Id tiến trình vào tệp nhật ký. Tôi làm nó như thế nào?Làm cách nào để thêm Id tiến trình vào tệp nhật ký LOG4J?

log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 

dán nhắn log mẫu

2011-01-07 11:48:21,940 [main] INFO Testing1 
2011-01-07 11:48:21,942 [main] INFO Test.common.ApplicationProperties - Used log4j 

log4j.properties
"log4j.properties" [Read only] 26 lines, 884 characters 
log4j.rootCategory=DEBUG, stdout, A1 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Threshold=WARN 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p (%c) %m%n 


log4j.appender.A1=org.apache.log4j.RollingFileAppender 
log4j.appender.A1.Threshold=DEBUG 
log4j.appender.A1.layout=org.apache.log4j.PatternLayout 
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
log4j.appender.A1.File=/homw/cus/logs/ccl.02.log 
log4j.appender.A1.MaxFileSize=5MB 
log4j.appender.A1.MaxBackupIndex=40 


log4j.category.test.common.DBConnectionPool=WARN 
log4j.category.test.common.DataBaseHandler=WARN 
log4j.category.test.cttg.tables=WARN 
log4j.category.test.middleware.tables=WARN 

log4j.logger.org.apache.axis=ERROR 
log4j.logger.org.apache.catalina=ERROR 
+1

thể trùng lặp của [Làm thế nào để đăng nhập Process id sử dụng Log4cxx hoặc log4j] (http://stackoverflow.com/questions/4286089/ h ow-to-log-process-id-using-log4cxx-or-log4j) – skiphoppy

+0

Bạn có muốn in ID tiến trình java hoặc ID luồng hiện tại được in không? – armstrhb

Trả lời

2

Không có cách nào để làm việc đó sử dụng các lớp java tiêu chuẩn. Thông thường, quá trình id được thêm vào ở cấp tệp không ở cấp độ nhật ký. Và here là ví dụ về thực hiện nó.

+0

tôi chỉ có tệp log4j.properites. Tôi không thấy bất kỳ tập tin cấu hình xml nào. – Arav

+0

Trong liên kết web bạn đã dán có tệp cấu hình xml – Arav

+0

Tôi không thấy bất kỳ tệp xml cấu hình nào. Nơi tôi có thể thực hiện thay đổi – Arav

10

Bạn nên sử dụng MDC để làm điều đó

Trong tập tin cấu hình:

log4j.appender.stdout.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} %-5p (%c) %m%n %X{PID} 

%X{PID} được sử dụng để phù hợp với giá trị bối cảnh PID

Và sau đó, trong các mã, trước khi quá trình ghi nhật ký bắt đầu:

log4j 1.x

RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); 
String pid = rt.getName(); 
MDC.put("PID", pid); 

log4j 2.x

RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); 
String pid = rt.getName(); 
ThreadContext.put("PID", pid); 
+0

Tôi đang cố gắng để chạy mã của bạn trong esso wso2 trong hòa giải kịch bản như thế này nhưng nó là đưa ra một lỗi. importPackage (Packages.java.net); importPackage (java.lang.management); importPackage (Packages.org.apache.log4j); thử { \t RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean(); Chuỗi pid = rt.getName(); MDC.put ("PID", pid); } } bắt (e) {} –

+0

Lỗi là gì? – ToYonos

+0

WSo2 EsB không cho phép tôi lưu thay đổi. nó cung cấp cho một ngoại lệ quản trị proxy, nếu tôi loại bỏ bộ hòa giải tập lệnh này và thay đổi một cái gì đó khác, dịch vụ hoạt động tốt. Tôi nghĩ rằng có cái gì đó sai với mã, có lẽ tôi không bao gồm các gói phải hoặc "kịch bản" hòa giải mất "javascript" như đầu vào và điều này có thể không được cho phép trong kịch bản java. –

1

Với mô hình sau đây, cho thấy threadid và lớp. Nếu bạn muốn nhìn thấy quá trình ID, có thể kiểm tra here

log4j.appender.SYSLOG.layout.conversionPattern=%-5p %d{ddMMyyyy HH:mm:ss.SSS} [%t:%c] %m%n 

tôi quản lý để làm như vậy, nhưng tôi có một vài appenders, một cho mỗi phần của ứng dụng, như sau:

log4j.rootCategory=ERROR, SYSLOG2 
log4j.logger.com.myself.logic=DEBUG, SYSLOG 
log4j.logger.com.myself.database=DEBUG, SYSLOG3 
log4j.logger.com.myself.other=DEBUG, SYSLOG 

Dưới đây là một số ví dụ về các bản ghi được tạo ra, để kiểm tra xem đây là những gì bạn cần:

INFO 20012015 11:56:17.318 [pool-1-thread-1:com.myself.logic.MonitoringTask] 10602: Validation of orders before UTC=2015-01-20T16:56:17 
INFO 20012015 11:56:34.200 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: MPU Library folder: xxxxx 
INFO 20012015 11:56:34.209 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: MPU Configuration folder: xxxxx 
INFO 20012015 11:56:34.773 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: Calling InitLeap() 
INFO 20012015 11:56:34.786 [main:com.gmv.pazgs.mus.mpu.CLibWrapper] 10402: Calling InitFourier() 
INFO 20012015 11:57:10.151 [CRON_Thread:com.myself.other.DTOLDispatcher] 10202: Times to send: [11:00, 23:00] - current time = Tue Jan 20 11:57:10 UTC 2015 
INFO 20012015 11:58:10.165 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: Executing Monitoring Task UTC=2015-01-20T11:58:10 
INFO 20012015 11:58:10.171 [pool-1-thread-5:com.myself.logic.OrderValidationTask] 10602: Executing OrderValidationTask UTC=2015-01-20T11:58:10 
INFO 20012015 11:58:10.291 [CRON_Thread:com.myself.other.DTOLDispatcher] 10202: Times to send: [11:00, 23:00] - current time = Tue Jan 20 11:58:10 UTC 2015 
INFO 20012015 11:58:10.684 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: Expiration of orders before UTC=2015-01-20T11:58:10 
INFO 20012015 11:58:11.218 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: checking orders for suppresed status before UTC=2015-01-20T11:58:11 
INFO 20012015 11:58:11.244 [pool-1-thread-4:com.myself.logic.MonitoringTask] 10602: Validation of orders before UTC=2015-01-20T16:58:11 
+0

Cảm ơn câu trả lời của bạn, nhưng tôi cần id quá trình, tôi đã sử dụng id thread. –

Các vấn đề liên quan