logging - log4net generates invalid xml -


i'm using log4net log in xml format.

i'm using following configuration:

  <appender name="rollinglogfileappendererror" type="log4net.appender.rollingfileappender, log4net">     <file type="log4net.util.patternstring" value="app_log\service.error.xml"/>     <staticlogfilename value="false"/>     <preservelogfilenameextension value="true"/>     <appendtofile value="true"/>     <rollingstyle value="date"/>     <datepattern value=".yyyy-mm-dd"/>     <filter type="log4net.filter.levelmatchfilter">       <acceptonmatch value="true"/>       <leveltomatch value="error"/>     </filter>     <filter type="log4net.filter.denyallfilter"/>     <layout name="standardlayout" type="log4net.layout.patternlayout">       <header>&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&lt;logentries&gt;</header>       <footer>&lt;/logentries&gt;       <conversionpattern value="&lt;logentry date=&quot;%date&quot; level=&quot;%level&quot; logger=&quot;%logger&quot; method=&quot;%aspnet-context{logmethodname}&quot;&gt;%message&lt;/logentry&gt;%newline"/>     </layout>   </appender> 

now works, except situations need @ latest log file. it's invalid contains like:

<?xml version="1.0" encoding="utf-8"?> <logentries>   <logentry>....</logentry> 

with no footer, naturally invalid.

the files collected central location, want visualize information logs. since of log files invalid, creates bit of problem.

now pre-process files before read visualization tool, rather have valid xml files.

does have suggestion of how handle problem?

edit:

another solution not log in xml, logging in example json, understand needs root "element", same problem seems exist.

your problem footer written when application stops or starts new log file. log4net (rollingfileappender) can't add footer earlier because not remove when adding new entry. overcome can make xml appender implements skelitonappender or rollingfileappender adds , removes footer when writing new log entry.

easier make files smaller need @ latest file.

btw easier way conversion using layout element in configuration:

  <layout type="xmllayout" /> 

and make xmllayout class:

public class xmllayout : xmllayoutbase { protected override void formatxml(xmlwriter writer, loggingevent loggingevent) {     writer.writestartelement("logentry");     writer.writestartelement("message");     writer.writestring(loggingevent.renderedmessage);     writer.writeendelement();     writer.writeendelement(); } } 

Comments

Popular posts from this blog

Android : Making Listview full screen -

javascript - Parse JSON from the body of the POST -

javascript - Chrome Extension: Interacting with iframe embedded within popup -