log4net与EventLogAppender不记录

以下配置没有任何反应。log4net与EventLogAppender不记录

的App.config

<?xml version="1.0" encoding="utf-8" ?> 

<configuration>

<configSections>

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

</configSections>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />

</startup>

<log4net>

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

</layout>

</appender>

</log4net>

</configuration>

Form1.cs中(例)

public partial class Form1 : Form 

{

private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

public Form1()

{

InitializeComponent();

log.Fatal("Test!");

}

}

回答:

你缺少的根配置,所以你需要像

<?xml version="1.0" encoding="utf-8" ?> 

<configuration>

<configSections>

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

</configSections>

<startup>

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>

</startup>

<log4net debug="true">

<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >

<applicationName value="MyApp" />

<layout type="log4net.Layout.PatternLayout">

<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />

</layout>

</appender>

<root>

<level value="All" />

<appender-ref ref="EventLogAppender" />

</root>

</log4net>

</configuration>

还要注意的是,如果你的程序被称为APP.EXE,那么你就需要所谓的APP.EXE事件日志源。如果这不存在,那么Log4net将尝试创建它,但这需要管理员权限,因此您可能需要至少一次以管理员身份运行程序以创建此事件源。为了避免这种情况,事件源通常会作为已经以admin身份运行的安装过程的一部分创建。

回答:

您应该添加:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

在你的项目的AssemblyInfo.cs 。这将初始化记录器。并把log4net放到一个名为log4net.config的文件中。

回答:

确保你给写权限的用户:

HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSet001 \服务\事件日志\ MyApp的

,如果你想添加更多logers必须遵循这种命名:

<root name="EventLog"> 

<level value="ALL"/>

<appender-ref ref="FirstLog"/>

</root>

<logger name="FileLogger" additivity="false">

<level value="ALL" />

<appender-ref ref="Secong_Log" />

</logger>

祝你好运。

以上是 log4net与EventLogAppender不记录 的全部内容, 来源链接: utcz.com/qa/261418.html

回到顶部