On Jun 13, 2006, at 12:55 PM, Steck, David wrote:
Just as an idea, you could push the process ID onto the NDC (or MDC)
after you fork(), then display it with %x (or %X) in your pattern.
-David
david.steck@xxxxxxxx
P.S. For anyone who knows:
Looking at the documentation for MDC, why does the C++ log4cxx MDC
require JDK 1.2? Is that mistakenly copied from log4j?
Spurious log4j comment, fixed with revision 414027.
-----Original Message-----
From: Dizzy [mailto:dizzy@xxxxxxxxx]
Sent: Tuesday, June 13, 2006 7:50 AM
To: log4cxx-user@xxxxxxxxxxxxxxxxxx
Subject: how to get the process ID from PatternLayout
Hi
I am using log4cxx for some multithreaded AND multiprocess programs (I
fork() on big operations, I spawn thread using boost::thread on per
operation tasks). For threads "%t" seems to work fine as it uniquely
identifies the thread but for processes it seems that "%t" displays
the same thing for all processes forked from the same parent, like I
have this output from a test program:
$ ./log4cxxtest
DEBUG 2006-06-13 11:31:26,455 (2812696064 testApp) message1
DEBUG 2006-06-13 11:31:26,457 (2812693424 testApp) newthread:
message2
DEBUG 2006-06-13 11:31:26,457 (2812696064 testApp) oldthread:
message2
DEBUG 2006-06-13 11:31:26,458 (2812696064 testApp) child: message3
DEBUG 2006-06-13 11:31:26,458 (2812696064 testApp) parent: message3
Where 2812696064 and 2812693424 are what %t displays.
So... how can I display something to identify the process using
PatternLayout ?
Thanks!
Having multiple processes write simultaneously to the same file using
FileAppender is risky. There is no attempt in either log4cxx or
log4j to synchronize file access across processes or JVM's. Ideally
the database appenders would be the good solution, but I have no
experience with them and would like to port them to use APR DB.
I did not see any methods in APR that would return a process name.
If you'd like to propose either extending the thread name to contain
a process name or to add another conversion token for process name,
please outline the implementation for at least Windows and Unix.
|