2011-01-07 14 views
13

मेरे पास वर्तमान में log4j में निम्न पैटर्न लेआउट है। मैं लॉग आईडी में प्रक्रिया आईडी जोड़ना चाहता हूं। मैं यह कैसे कर सकता हूं?LOG4J लॉग फ़ाइल में प्रक्रिया आईडी कैसे जोड़ें?

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

चिपकाया गया नमूना लॉग संदेश

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

संभव डुप्लिकेट (http://stackoverflow.com/questions/4286089/ [Log4cxx या log4j का उपयोग कर प्रक्रिया आईडी प्रवेश कैसे करें] ज ow-to-log-process-id-use-log4cxx-or-log4j) – skiphoppy

+0

क्या आप जावा प्रक्रिया आईडी मुद्रित करना चाहते हैं, या वर्तमान थ्रेड आईडी मुद्रित करना चाहते हैं? – armstrhb

उत्तर

2

मानक जावा वर्गों का उपयोग कर इसे करने का कोई तरीका नहीं है। आमतौर पर आईडी को लॉग स्तर पर फ़ाइल स्तर पर जोड़ा जाता है। और here ऐसा करने का उदाहरण है।

+0

मेरे पास केवल log4j.properites फ़ाइल है। मुझे कोई एक्सएमएल कॉन्फ़िगरेशन फ़ाइल नहीं दिखाई दे रही है। – Arav

+0

weblink तुम वहाँ चिपकाया है में एक config xml फ़ाइल – Arav

+0

मैं किसी भी config xml फ़ाइल को देखने न है। मैं परिवर्तन कहां कर सकता हूं – Arav

10

आप MDC का उपयोग करना चाहिए यह

करने के लिए कॉन्फ़िग फ़ाइल में:

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

%X{PID} से पहले, तो संदर्भ मूल्य पीआईडी ​​

और मैच के लिए, कोड में प्रयोग किया जाता है लॉगिंग शुरू होती है:

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

मैं इस तरह स्क्रिप्ट मध्यस्थ में wso2 esb में अपना कोड चलाने की कोशिश कर रहा हूं लेकिन यह एक त्रुटि दे रहा है। importPackage (Packages.java.net); आयात पैकेज (java.lang.management); importPackage (Packages.org.apache.log4j); कोशिश करें { \t रनटाइमएक्सबीन आरटी = प्रबंधन फैक्टरी.getRuntimeMXBean(); स्ट्रिंग पिड = आरटी।getName(); एमडीसी.पुट ("पीआईडी", पिड); } } पकड़ें (ई) {} –

+0

त्रुटि क्या है? – ToYonos

+0

WSo2 EsB मुझे परिवर्तन को सहेजने की अनुमति नहीं देता है। यह प्रॉक्सी व्यवस्थापक अपवाद देता है, अगर मैं इस स्क्रिप्ट मध्यस्थ को हटा देता हूं और कुछ और बदलता हूं, तो सेवा ठीक काम करती है। मुझे लगता है कि कोड में कुछ गड़बड़ है, शायद मैं सही पैकेज या "स्क्रिप्ट" मध्यस्थ को इनपुट के रूप में "जावास्क्रिप्ट" नहीं लेता हूं और जावा स्क्रिप्ट में इसकी अनुमति नहीं दी जा सकती है। –

1
निम्नलिखित पैटर्न के साथ

, threadid और वर्ग दिखा। आप प्रक्रिया ID को देखने के लिए चाहते हैं, की जाँच कर सकते here

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

मैं ऐसा करने में कामयाब रहे, लेकिन मैं आवेदन के प्रत्येक भाग के लिए एक कई appenders है, निम्नलिखित की तरह,:

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 

यहाँ उत्पन्न लॉग के कुछ उदाहरण, जांच करने के लिए कर रहे हैं अगर यह तुम क्या आवश्यकता है:

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

आपके उत्तर के लिए धन्यवाद, लेकिन मुझे प्रक्रिया आईडी की आवश्यकता है, मैं पहले से ही थ्रेड आईडी का उपयोग कर रहा हूं। –

संबंधित मुद्दे