65.9K
CodeProject 正在变化。 阅读更多。
Home

一个滚动的 XmlWriterTraceListener

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.30/5 (13投票s)

2008年11月13日

LGPL3

1分钟阅读

viewsIcon

130362

downloadIcon

4216

XmlWriterTraceListener 的派生类, 可自动管理跟踪文件的大小

引言

是否遇到过在生产环境配置 WCF 跟踪后,svclog 文件不断增长的问题? 是否不想仅仅为了删除或移动跟踪文件而重启应用程序?

那么,您会喜欢 RollingXmlWriterTraceListener,它是一个专门的 XmlWriterTraceListener,与 WCF 跟踪机制完全兼容。

背景

当在 WCF 应用程序中启用跟踪时,并且使用默认的 XmlWriterTraceListener(生成 Microsoft 的 XML 跟踪格式的侦听器,svctraceviewer.exe 可以理解),您将无法在应用程序运行时删除跟踪文件。 因此,可能会发生生产服务器磁盘空间耗尽的情况,而您又无权停止它。 您可以花时间计算整个系统何时会崩溃。(别问了,我们的客户不同意短时间的停机... 即使在那种情况下。)

这就是我编写这个派生类的原因:当达到指定的文件大小时,它将启动一个新的跟踪文件(带有数字的四字符后缀)。

Using the Code

使用特殊的跟踪侦听器非常简单。 将类放入您的基本库之一,调整命名空间,然后在 app.config 文件中使用它代替默认的 XmlWriterTraceListener

<?xml version="1.0"?>
<configuration>
    <system.diagnostics>

        <sources>
            <source name="System.ServiceModel" switchValue="All">
                <listeners>
                    <add name="System.ServiceModel.XmlTrace.Listener" />
                </listeners>
            </source>

            <source name="System.Runtime.Serialization" switchValue="All">
                <listeners>
                    <add name="System.Runtime.Serialization.XmlTrace.Listener" />
                </listeners>
            </source>
        </sources>

        <sharedListeners>
            <add
                type="MarcW.Tools.Diagnostics.RollingXmlWriterTraceListener, MarcW.Tools"
                name="System.ServiceModel.XmlTrace.Listener"
                traceOutputOptions="None"
                initializeData=".Logs\System.ServiceModel.svclog"
                MaxTraceFileSize="134217728" />
            <add
                type="MarcW.Tools.Diagnostics.RollingXmlWriterTraceListener, MarcW.Tools"
                name="System.Runtime.Serialization.XmlTrace.Listener"
                traceOutputOptions="None"
                initializeData=".Logs\System.Runtime.Serialization.svclog"
                MaxTraceFileSize="134217728" />
        </sharedListeners>

    </system.diagnostics>
</configuration>

确保选择正确的类型并指定跟踪器可以找到该类型的程序集。 此外,您需要使用 MaxTraceFileSize 属性设置在启动新文件之前跟踪文件的最大大小。 这是可选的,默认值为 128 MB。

历史

  • 2008-11-13
    • 首次发布
  • 2008-11-14
    • 更新了源代码以符合 StyleCop,并在某些地方完成了 XMLDoc
    • 没有应用功能性更改
© . All rights reserved.