WCF日志记录,设置最大文件大小?

Ban*_*hee 10 c# wcf logging diagnostics

我使用Microsoft服务配置编辑器来设置诊断(WCF日志记录),我找不到任何方法来设置最大文件大小?

我找到了MaxSizeOfMessageToLog但是对文件大小没有任何作用?

编辑1:根据这个:http://msdn.microsoft.com/en-us/library/aa395205.aspx 在sharedListeners级别应该有一个maxFileSizeKB但是当在add标签中命中空间时我没有可能输入maxFileSizeKB?

编辑2:当添加maxFileSizeKB时,serivce将不再启动,而是我将获得以下优先权:

'maxFileSizeKB'不是类型'System.Diagnostics.XmlWriterTraceListener'的有效配置属性.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.异常详细信息:System.Configuration.ConfigurationErrorsException:'maxFileSizeKB'不是类型'System.Diagnostics.XmlWriterTraceListener'的有效配置属性.源错误:在执行当前Web请求期间生成了未处理的异常.可以使用下面的异常堆栈跟踪来识别有关异常的起源和位置的信息.

编辑3:

我必须下载循环TraceListener示例并将其包含在我的项目中,没有内置的fileSize限制器.

我的配置现在看起来像这样:

<system.diagnostics>
    <sources>
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
        <listeners>
          <add name="ServiceModelMessageLoggingListener"/>
        </listeners>
      </source>
      <source name="System.ServiceModel" switchValue="Warning,ActivityTracing"
        propagateActivity="false">
        <listeners>
          <add name="ServiceModelTraceListener"/>
        </listeners>
      </source>
    </sources>
    <sharedListeners>
      <add initializeData="C:\My\MyRelease 0.31\Host\My.Host.Dev\web_messages.svclog"
        type="Microsoft.Samples.ServiceModel.CircularTraceListener,CircularTraceListener"
        name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp" maxFileSizeKB="1024">
        <filter type="" />
      </add>
      <add initializeData="C:\My\MyRelease 0.31\Host\My.Host.Dev\web_tracelog.svclog"
        type="Microsoft.Samples.ServiceModel.CircularTraceListener,CircularTraceListener"
        name="ServiceModelTraceListener" traceOutputOptions="Timestamp" maxFileSizeKB="1024">
        <filter type="" />
      </add>
    </sharedListeners>
Run Code Online (Sandbox Code Playgroud)

这是限制消息日志文件而不是跟踪日志文件?

Fab*_*ske 12

这是因为您提供的链接使用自定义跟踪侦听器("Microsoft.ServiceModel.Samples.CircularTraceListener"),它具有"maxFileSizeKB"属性.

没有内置函数来限制/滚动svclog文件,因此您确实需要使用自定义跟踪侦听器.您可以使用链接中使用的示例(请阅读文章末尾如何下载代码).或者这是另一个可以有用的.


Voo*_*ild 7

只是想添加@Fabske答案,以便这个工作

1)下载WCF示例:http: //go.microsoft.com/fwlink/?LinkId = 150780

2)打开:\ WF_WCF_Samples\WCF\Basic\Management\CircularTracing

3)构建解决方案并获取CircularTraceListener.dll

4)将该dll添加到项目引用中

5)更新您的配置,如http://msdn.microsoft.com/en-us/library/aa395205(v=vs.100).aspx

  • 还要注意MSDN文章中的命名空间错误(正如评论员所指出的那样),以免浪费大量时间,就像我试图找出你的项目无法运行的原因一样... (2认同)