繁体   English   中英

Log4Net:忽略引用DLL中的自定义appender

[英]Log4Net: Custom appender from referenced DLL is ignored

我从子类化AppenderSkeleton创建了一个非常简单的appender。 我将它放入一个额外的库并引用它。 我使用它的程序中app.config的相关部分是:

  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <appender name="FileAppender" type="log4net.Appender.FileAppender">
      <file value="${LOCALAPPDATA}\MyProgram\MyLog.txt" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger - %message%newline%exception" />
      </layout>
      <threshold value="Debug" />
    </appender>
    <appender name="MySimpleAppender" type="Some.Namespace.SimpleAppender" >
      <threshold value="Info" />
    </appender>
    <root>
      <appender-ref ref="FileAppender" />
      <appender-ref ref="MySimpleAppender" />
    </root>
  </log4net>

配置程序在Program.cs设置如下:

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

当我现在记录某些内容时,例如:

LOG.Info("foo");

消息被写入到文件(使用FileAppender ),但我的SimpleAppender被忽略。 当我显式创建一个nullary构造函数并为它设置断点时,我发现它甚至没有实例化。 当我将类文件直接复制到我的程序所在的项目中时,它可以工作。

我错过了什么?

您需要将程序集名称添加到类型标记。 现在它正在寻找Log4Net组件。

它采用的格式

type="Namespace,AssemblyName"

非常喜欢

 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>

你需要

<appender name="MySimpleAppender" type="Some.Namespace.SimpleAppender,MyAssembly" >

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM