Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# entlib CustomTraceListener未解析_C#_Logging_Dependency Injection_Enterprise Library - Fatal编程技术网

C# entlib CustomTraceListener未解析

C# entlib CustomTraceListener未解析,c#,logging,dependency-injection,enterprise-library,C#,Logging,Dependency Injection,Enterprise Library,我是企业库的新手(5,有可选更新),我正在尝试使用我自己的CustomTraceListener和日志块 日志记录与提供的平面文件侦听器一起工作,但我似乎无法将其扩展到我的自定义类 记录到FlatFileListener,但不记录到我的CustomListener: 首先,我尝试使用配置编辑器添加customtracelistener,但是配置编辑器没有列出/检测任何customtracelistener,我怀疑这是问题的一部分还是全部 因此,我再次基于以下内容添加了以下内容: app.conf

我是企业库的新手(5,有可选更新),我正在尝试使用我自己的CustomTraceListener和日志块

日志记录与提供的平面文件侦听器一起工作,但我似乎无法将其扩展到我的自定义类

记录到FlatFileListener,但不记录到我的CustomListener: 首先,我尝试使用配置编辑器添加customtracelistener,但是配置编辑器没有列出/检测任何customtracelistener,我怀疑这是问题的一部分还是全部

因此,我再次基于以下内容添加了以下内容:

app.config侦听器手动添加

  • 或者我是否需要理解并处理UnityDefaultBehaviorExtension,如所述

  • 现行守则是否错误

  • 或者解决办法就在别处

  • 谢谢你的专业知识

    去抓。有整整一章是关于编写自定义跟踪侦听器的。您将了解底层技术、事物为何以这种方式工作、如何组合,然后您将能够回答自己的问题


    至于上述方法不起作用的原因:当使用CustomXXXData配置类时,提供者需要一个采用NameValueCollection的构造函数。你没有,所以你的代码实际上是错的。通过实验室工作,您将了解到这一点以及更多信息。

    回顾过去,我建议您也进行咨询,因为扩展性实验室似乎不是针对最新的entlib版本编写的,例如,我只是在扩展TraceListener而不是CustomTraceListener(并添加base:name调用)时才使用扩展。msdn文章是为异常块编写的,因此也可能有用。但是请注意,扩展实验室对于理解正在发生的事情仍然非常有用!扩展性实验室是针对entlib5编写的。我知道,我写了几个练习。
        static UnityContainer _container;
        static LogWriter _writer;
    
        internal static void Inf(this string message)
        {
            if (_container == null)
            {
                _container = new UnityContainer();
                _container.AddNewExtension<EnterpriseLibraryCoreExtension>();
            }
            if (_writer == null && _container != null)
            {
                _writer = _container.Resolve<LogWriter>();
                LogEntry log = new LogEntry();
                log.Message = message;
                log.Categories.Add("Information");
                log.Severity = TraceEventType.Information;
                _writer.Write(log);
            }
        }
    
    namespace Test.Catch
    {
        [ConfigurationElementType(typeof(CustomTraceListenerData))]
        public class LoggerCustom : CustomTraceListener
        {
            public override void TraceData(TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data)
            {
                if (data is LogEntry && this.Formatter != null)
                {
                    this.WriteLine(this.Formatter.Format(data as LogEntry));
                } else
                {
                    this.WriteLine(data.ToString());
                }
            }
    
            public override void Write(string message)
            {
                Trace.Write(message);
            }
    
            public override void WriteLine(string message)
            {
                Trace.WriteLine(message);
            }
        }
    }
    
      <add listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.CustomTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=5.0.505.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      type="Test.Catch.LoggerCustom, Test.Catch" traceOutputOptions="None"
      name="Custom Trace Listener" initializeData="" formatter="Text Formatter Plain" />