C# windows просмотрщик событий - PullRequest
2 голосов
/ 06 мая 2020

Я хочу регистрировать ошибки из моего C# приложения в Windows Event Viewer, используя журнал 4net с EventLogAppender (ошибки должны регистрироваться в журнале приложения) У меня есть журнал 4net .config class с этим кодом

<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 я добавил следующую строку:

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

Затем в моем классе Program

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);
     }
}
}

Я должен упомянуть, что я использовал питание shell для создания нового журнала событий с именем «MySource»

Проблема в том, что я получаю следующую ошибку:

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.

1 Ответ

1 голос
/ 06 мая 2020

Реализуется последняя версия журнала 4net (на сегодняшний день 2.0.8). net стандарт 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

Если вы хотите использовать EventLogAppender, вам придется перейти на. net framework.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...