2012-07-19 154 views
4

所以我开始它的生命,因为这一个自定义跟踪监听器:加载跟踪器属性

http://www.codeproject.com/Articles/30956/A-Rolling-XmlWriterTraceListener

我已经修改了这工作更喜欢log4net的RollingFileAppender进行(见:http://logging.apache.org/log4net/release/sdk/log4net.Appender.RollingFileAppender.html

当我运行代码时,我发现它没有在配置文件中设置自定义属性的属性/字段值。

在运行时分析对象显示Attributes属性(this.Attributes)不包含任何内容。

任何想法如何解决这个问题?

我应该手动填充这些东西吗?

确定这里是一个代码示例:

[HostProtection(Synchronization = true)] 
public class RollingXmlWriterTraceListener : XmlWriterTraceListener 
{ 
    public RollingXmlWriterTraceListener(string filename) 
     : base(filename) 
    { 
     _basicTraceFileName = filename; 
     LoadAttributes(); 
    } 

在LoadAttributes方法,然后我做...

if (Attributes.ContainsKey("maxTraceFileCount")) 
{ 
    string attributeValue = Attributes["maxTraceFileCount"]; 

的问题是 “属性” 决不会包含什么。 该类使用其中确实包含了属性的配置信息,从框架代码实例化......

<sharedListeners> 
    <add type="emedia.Common.Wcf.RollingXmlWriterTraceListener, emedia.Common.Wcf" 
     name="System.ServiceModel.XmlTrace.Listener" 
     traceOutputOptions="None" 
     initializeData="C:\Logs\MyTraceFileName.svclog" 
     MaxTraceFileSize="1048576" 
     MaxTraceFileCount="10" 
    /> 
</sharedListeners> 

编辑2:

的XmlWriterTraceListener类是.NET的一部分,通过使在继承我的基类Attributes属性。

在配置我应该可以再指定任何属性的代码做这样的事情......

var attValue = Attributes["something"]; 

...但由于某些原因,这又回到空(该属性是不是在采集)。

+0

没有无法使用的代码以及它想要使用的配置;真的很难说。请提供尽可能最小的示例(不要复制并粘贴您的当前代码)以重现问题。 – 2012-07-19 14:30:59

回答

6

属性集合不会从配置文件填充,直到后您的听众的实例被完全构造。

您不必在构造函数中调用LoadAttributes方法,而是需要确保在侦听器对象完全实例化之后但在第一次使用之前调用它。

+1

谢谢,这正是我的问题! – Mike 2014-03-12 03:31:58

2

万一你有没有固定的这个或任何人的未来帮助...

我一直在寻找这个今天。您是否包含了GetSupportedAttributes的覆盖?

今天早上有一段时间我有同样的问题。包括这一点,并列出我期望解决它的属性。因此,在你上面的例子你需要

protected override string[] GetSupportedAttributes() 
{ 
    return new[] { "MaxTraceFileSize" }; 
} 
+0

是否仅仅添加以某种方式填充值?自从我查看代码后,我终于离开了硬编码的值,因为我从来没有看到它的解决方案,但很快就会发现一个错误修复会议,这是要做的事情。 – War 2012-11-10 11:07:40

+1

GetSupportedAttributes需要实现让.NET从配置文件读取属性值 - 但这只是故事的一半。在自定义TraceListener对象的构造函数中访问时,Attributes集合始终为空。 – MrUpsideDown 2014-03-05 19:09:12

+0

你能解决这个>>? – 2015-04-30 05:53:24