【问题标题】:WCF logging, set max file size?WCF 日志记录,设置最大文件大小?
【发布时间】:2012-04-23 11:41:38
【问题描述】:

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

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

编辑1:据此:http://msdn.microsoft.com/en-us/library/aa395205.aspx 在 sharedListeners 级别应该有一个 maxFileSizeKB,但是在添加标签中点击空间时,我无法输入 maxFileSizeKB?

编辑 2: 添加 maxFileSizeKB 时,服务将不再启动,而是我会得到以下异常:

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

编辑 3:

我必须下载 Circular TraceListener 示例并将其包含在我的项目中,没有内置的文件大小限制器。

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

<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>

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

【问题讨论】:

  • 能否请您包含您的配置部分?
  • 顺便说一句 - 这是CircularTraceListener的代码:cbasetest.svn.codeplex.com/svn/SoftLibrary_Dev/SDFL/Reputation/…
  • 顺便说一句,您是否曾尝试使用“Microsoft 服务配置编辑器”来执行此任务(“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools \SvcConfigEditor.exe")
  • maxFileSizeKBCircularTraceListener 类的自定义属性,该类是该 SDK 示例的主题。
  • 你当然是对的。我不得不下载 Circular TraceListener 并将该 DLL 包含到我的项目中。我现在已经设置了它,但是当消息保持正确大小时,跟踪文件仍在增长? Se 编辑 3.

标签: c# wcf logging diagnostics


【解决方案1】:

只想添加到@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 文章中的命名空间拼写错误(正如评论员所指出的那样),以免您像我一样浪费大量时间试图弄清楚为什么您的项目无法运行...
  • 我做到了。下载示例,构建 .dll,将其放入我的项目引用中,进行配置并处理错字(不再存在)。但mxFileSizeKB 仍被标记为未知,我没有得到文件。
  • 好的。管理它。我的代码:pastebin.com/JeYE3rEtmaxFilesizeKB 仍被标记为未知,但它可以工作并且文件保持正确的大小。我的 switchValue 也是All,您可能希望将其设置为InformationWarning 或类似的东西;)
  • 在将 switchValue 更改为 All 之前,我没有创建文件。另外,如果您收到ConfigurationErrorsException CircularTraceListener error try this
【解决方案2】:

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

没有限制/滚动 svclog 文件的内置功能,因此您确实需要使用自定义跟踪侦听器。 您可以使用链接中使用的示例(在文章末尾阅读如何下载代码)。或者这里是another one,可能会有用。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
  • 2021-07-16
相关资源
最近更新 更多