我想使用log4net登录Windows事件查看器 我创建了一个控制台应用程序(.NET Framework 4),我添加了引用log4net.dll,我将以下代码放在我的App.config中:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<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>
<root>
<level value="ALL"/>
<appender-ref ref="EventLogAppender"/>
</root>
</log4net>
<startup><supportedRuntime version="v2.0.50727"/></startup>
</configuration>
我输入以下代码:
class Program
{
static void Main(string[] args)
{
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Error("test error", new Exception("error's exception", new Exception("error's innerexception")));
Console.Read();
}
}
它没有记录,没有任何反应,为什么?
由于
答案 0 :(得分:10)
您需要致电configure。
更改:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", Watch = true)]
到
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
指定ConfigFile = "App.config"
时,它会查找App.config,但您的文件名为[FileName].Config
。
答案 1 :(得分:5)
您需要从log4net库中调用 XmlConfigurator.Configure 来初始化它。 (见下文)
class Program
{
static void Main(string[] args)
{
// you need this
XmlConfigurator.Configure();
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Error("test error", new Exception("error's exception", new Exception("error's innerexception")));
Console.Read();
}
}
答案 2 :(得分:0)
在应用程序开始时调用XmlConfigurator.Configure()。
您还需要授予运行应用程序权限的用户将数据放入事件日志中。
执行此操作的好方法是使用PowerShell,管理员模式
New-EventLog EventLogName -source ApplicationName
另外,将这两个参数添加到appender
中 <param name="LogName" value="EventLogName " />
<param name="ApplicationName" value="ApplicationName" />
此致