C#Windows事件查看器 [英] C# windows event viewer

查看:138
本文介绍了C#Windows事件查看器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Log4net和EventLogAppender在Windows Event Viewer中从我的C#应用​​程序记录错误(错误必须记录在应用程序日志下)我有一个带有此代码的log4net.config类

I want to log the errors from my C# app in Windows Event Viewer using log4net with the EventLogAppender (the errors must be logged under the Application log) I have a log4net.config class with this code

<configuration>
<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a" />
</configSections>
  <log4net>
   <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
       <applicationName value="MySource" />
       <layout type="log4net.Layout.PatternLayout">
         <conversionPattern value="{%level} {%date} – %message%newline" />
       </layout>
    </appender>

  <root>
     <level value="DEBUG" />
     <appender-ref ref="EventLogAppender" />
  </root>
  </log4net>
</configuration>

在AssemblyInfo中,我添加了以下行

In AssemblyInfo I added the following line

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

然后在我的程序类中

class Program
{
  static log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

  static void Main(string[] args)
  {
     string name=null;
     try
     {
         Console.WriteLine("Name : " + name.ToString());
     }
     catch (NullReferenceException nullException)
     {
        log.Error("Name is NULL", nullException);
     }
}
}

我不得不提到,我使用Power Shell创建了一个名为"MySource"的新EventLog.

I have to mention that I used power shell to create a new EventLog called "MySource"

问题是我收到以下错误:

The problem is that I receive the following error:

log4net:ERROR Could not create Appender [EventLogAppender] of type [log4net.Appender.EventLogAppender]. Reported error follows.
System.TypeLoadException: Could not load type 'log4net.Appender.EventLogAppender' from assembly 'log4net, Version=2.0.8.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a'.
   at System.Reflection.RuntimeAssembly.GetType(QCallAssembly assembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type, ObjectHandleOnStack keepAlive, ObjectHandleOnStack assemblyLoadContext)
   at System.Reflection.RuntimeAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly, String typeName, Boolean throwOnError, Boolean ignoreCase)
   at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [EventLogAppender] not found.

推荐答案

最新版本的log4net(今天为2.0.8)正在实施.net标准1.3:

Latest version of log4net (2.0.8 as of today) is implementing .net standard 1.3: https://logging.apache.org/log4net/release/release-notes.html.

.net标准1.3中不支持 EventLogAppender : https://logging.apache.org/log4net/release/framework-support.html#netstandard-1.3

In .net standard 1.3 EventLogAppender is not supported: https://logging.apache.org/log4net/release/framework-support.html#netstandard-1.3

如果要使用 EventLogAppender ,则必须切换到.net框架.

If you want to use EventLogAppender, you will have to switch to .net framework.

这篇关于C#Windows事件查看器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆