我有 MyLogger 类,我在其中使用 log4net。如何修改我的附加程序以将日志保存在特定的日志名中(我想通过参数 logName 设置它)。
public void AddEntry(string source, string logName, string contextInfo, string message, EventLogEntryType eventType)
{
log4net.ILog Log = log4net.LogManager.GetLogger(source);
Log.Error(String.Format("Context Info: {0}{1}{2}{3}", contextInfo, Environment.NewLine, Environment.NewLine, message));
}
<log4net>
<root>
<priority value="ALL" />
<appender-ref ref="EventLogAppender" />
</root>
这是我的Appender。现在它以通用日志类型应用程序写入。
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger (%property{myContext}) [%level]- %message%newline" />
</layout>
</appender>
</log4net>
我想你正在寻找的是这样的:
<param name="LogName" value="MyLog" />
可以找到更多信息here http://geekswithblogs.net/TimH/archive/2006/04/13/75063.aspx。如果你做这样的事情,你可能想看看这个问题 https://stackoverflow.com/questions/3412463/description-for-event-id-from-source-cannot-be-found/3414029#3414029以及。基本上,这是关于注册您的应用程序以便事件日志了解它。
Edit(通过代码配置):
没有测试过,但这应该可以解决问题:
foreach (AppenderSkeleton appender in this.Logger.Repository.GetAppenders())
{
var eventlogAppender = appender as EventLogAppender;
if (eventlogAppender != null)
{
eventlogAppender.LogName = "MyLog";
eventlogAppender.ActivateOptions();
break;
}
}
您可以添加一些测试来验证是否只有一个 EventLogAppender,但您可能不需要这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)