我从子类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构造函数并为它设置断点时,我发现它甚至没有实例化。当我将类文件直接复制到我的程序所在的项目中时,它可以正常工作。
我错过了什么?
答案 0 :(得分:3)
您需要将程序集名称添加到type标记中。现在正在查看Log4Net程序集。
采用格式
type="Namespace,AssemblyName"
非常喜欢
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
你需要
<appender name="MySimpleAppender" type="Some.Namespace.SimpleAppender,MyAssembly" >