[
https://issues.apache.org/jira/browse/LOG4NET-209?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13100408#comment-13100408
]
Matthew Gabeler-Lee commented on LOG4NET-209:
---------------------------------------------
I am calling FormatXml directly.
My personal use case is collecting events into a larger XmlDocument, attempting
to use code like this:
// XmlElement parentElement = ...
// LoggingEvent[] events // arg to BufferingAppenderSkeleton.SendBuffer
using (var nw = parentElement.CreateNavigator().AppendChild())
for (int i = 0; i < events.Length; ++i)
FormatXml(nw, events[i]);
If FormatXml is not meant to be generally useable, it shouldn't be public.
I can write up a patch to fix this problem, as having looked at the code it
doesn't appear all that difficult. Would you accept such a patch? If so, I
see two strategies for controlling the namespace behavior:
1) Add a property to XmlLayout to control the element name building at
ActivateOptions time and the overload that is called at FormatXml time (less
flexible, marginally better performance)
2) Never pre-build combined prefix:elementname at ActivateOptions time and
detect the mode at each call to FormatXml (more flexible, marginally worse
performance)
> XmlLayout.FormatXml calls wrong overload of XmlWriter.WriteStartElement
> -----------------------------------------------------------------------
>
> Key: LOG4NET-209
> URL: https://issues.apache.org/jira/browse/LOG4NET-209
> Project: Log4net
> Issue Type: Bug
> Components: Other
> Affects Versions: 1.2.10
> Environment: .NET 3.5 SP1
> Reporter: Matthew Gabeler-Lee
>
> FormatXml calls WriteStartElement using prefixed element names (e.g.
> "log4net:event"), but it calls the overload of WriteStartElement that expects
> a local name. Thus, if it writes to an xml writer that actually checks such
> things, it crashes. Instead, it should call the overload that separates the
> prefix from the local name. E.g.: writer.WriteStartElement(this.m_prefix,
> this.m_elmEvent, null).
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira