You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by robert rowntree <ro...@yahoo.com> on 2005/06/26 02:11:53 UTC

xmllayout that preserves MDC properties

have trouble serializing Log events that have MDC
properties as XML?

with text output , everything is fine. When the layout
changes to "XMLLayout" the MDC stuff is lost. 

Why doesn't a log event know how to serialize itself?

I thought that log4j used to handle a
"conversionpattern" in an XML context. Now it prints
warnings. 

Below are props file settings, application java code
for MDC props, and the actual log file output for 2
scenarios
  #1 for plain text works OK

  #2 for XMLLayout where the MDC fields get lost

-- text with MDC properties from LogEvent

-- MDC setters:
    MDC.put("type",
POProperty.get("log.typ.create.topic"));

    MDC.put("sessionid",
el.getAttributes().item(0).getNodeValue());

    MDC.put("topicname",
nodes.item(i).getFirstChild().getNodeValue())

-- log4j.props
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d
[%t] %-5p %c %X{topicname} %X{sessionid} %X{type} -
%m%n

-- text log records produced
 
2005-06-25 16:26:59,797 [Pool Worker-0] INFO 
com.borneo.servlet.CreateTopicTask rhythm and blues
9DA73E8296124397959B78C3BF546255 admtopc - create new
topic
2005-06-25 16:27:02,561 [Pool Worker-0] INFO 
com.borneo.servlet.CreateSubscriptionTask
rhythm+and+blues DD37AF55D4AC0EE614894508396BAC61
admsubc -  new subscripion
2005-06-25 16:27:05,535 [Pool Worker-0] INFO 
com.borneo.servlet.PubTopicItemTask rhythm and blues
E8932697429E81A55AF539BFB77AB31F xpubtpc - publish
collection

-----------------------
converting to XML while saving the MDC property
entries

-- XML that is desired from log event with MDC
properties

<log4j:event
logger="samples.attachments.EchoAttachmentsService"
timestamp="1090454329854" sequenceNumber="0"
level="INFO" thread="[http80-Processor18]">
<log4j:message><![CDATA[pub single
file]]></log4j:message>
<log4j:throwable><![CDATA[
]]></log4j:throwable>
<log4j:locationInfo class="?" method="?" file="?"
line="?"/>
<log4j:properties>
    <log4j:data name="hostname" value="file"/>
    <log4j:data name="log4jid" value="1"/>
    <log4j:data name="application" value="b2bpo.log"/>
    <log4j:data name="type" value="srvrfl"/>
    <log4j:data name="sessionid"
value="57C2CC9A87C499E94037C0309CE80CBF"/>
    <log4j:data name="topicname" value="google"/>
</log4j:properties>
</log4j:event>

---------
-- props to get xml using illegal pattern

log4j.appender.LOGFILE.layout=org.apache.log4j.xml.XMLLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d
[%t] %-5p %c %X{topicname} %X{sessionid} %X{type} -
%m%n

-- Error messages regarding Pattern
log4j:WARN No such property [conversionPattern] in
org.apache.log4j.xml.XMLLayout.

---- Actual Log XML that is produced ( MDC properties
gone )

<log4j:event
logger="com.borneo.servlet.CreateTopicTask"
timestamp="1119743336310" level="INFO" thread="Pool
Worker-0">
<log4j:message><![CDATA[create new
topic]]></log4j:message>
</log4j:event>

<log4j:event
logger="com.borneo.servlet.CreateSubscriptionTask"
timestamp="1119743339194" level="INFO" thread="Pool
Worker-0">
<log4j:message><![CDATA[ new
subscripion]]></log4j:message>
</log4j:event>

<log4j:event
logger="com.borneo.servlet.PubTopicItemTask"
timestamp="1119743341988" level="INFO" thread="Pool
Worker-0">
<log4j:message><![CDATA[publish
collection]]></log4j:message>
</log4j:event>


robert rowntree 
Borneo Consulting Inc
415 642 4162
415 335 5539 M

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-user-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-user-help@logging.apache.org