繁体   English   中英

Log4Net:将C#AdoNetAppender与自定义Xml布局一起使用

[英]Log4Net: Using the C# AdoNetAppender with a custom Xml layout

我有点卡住了。 我一直在编写一个日志记录模块,该模块要求附加程序能够在数据库上执行存储过程以记录我们的信息。 我写了一个自定义的xml布局,如下所示:

protected override void FormatXml(XmlWriter writer, LoggingEvent loggingEvent)
    {
        writer.WriteStartElement("LogEntry");

        writer.WriteStartElement("DateTime");
        writer.WriteString(loggingEvent.TimeStamp.ToLongTimeString());
        writer.WriteEndElement();

        writer.WriteStartElement("Message");
        writer.WriteString(loggingEvent.RenderedMessage);
        writer.WriteEndElement();

        writer.WriteStartElement("User");
        writer.WriteString(loggingEvent.UserName);
        writer.WriteEndElement();

        writer.WriteStartElement("Process");
        writer.WriteString(loggingEvent.ThreadName);
        writer.WriteEndElement();

        writer.WriteStartElement("Severity");
        writer.WriteString(loggingEvent.Level.ToString());
        writer.WriteEndElement();

        writer.WriteStartElement("Title");
        writer.WriteString(loggingEvent.LoggerName);
        writer.WriteEndElement();

        writer.WriteStartElement("Class");
        writer.WriteString(loggingEvent.LocationInformation.ClassName);
        writer.WriteEndElement();

        writer.WriteStartElement("Filename");
        writer.WriteString(loggingEvent.LocationInformation.FileName);
        writer.WriteEndElement();

        writer.WriteEndElement();
    }

因此,基本上,我希望AdoNetAppender通过此布局运行日志记录事件,然后以生成的Xml作为参数执行storproc。

EXEC Logging.InsertEntry @XML

不幸的是,周围似乎没有任何例子。

任何帮助将不胜感激。

这样的事情应该可以工作(SQL Server):

<appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
    <bufferSize value="1" />
    <threshold value="ALL"/>
    <param name="ConnectionType" value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <param name="ConnectionString" value="YourConnectionString" />
    <param name="UseTransactions" value="False" />
    <commandText value="Logging.InsertEntry" />
    <commandType value="StoredProcedure" />
    <parameter>
        <parameterName value="XML"/>
        <dbType value="String"/>         
        <layout type="YourLayoutType">           
    </parameter>
</appender>

但是我确实想知道您是否宁愿创建一个存储过程,该存储过程具有xml结构中所有元素的参数...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM