c# writing to the event viewer

后端 未结 3 1922
时光取名叫无心
时光取名叫无心 2020-12-23 15:57

I\'m trying to write to the event viewer in my c# code, but I\'m getting the wonderful \"Object reference not set to an instance of an object\" message. I\'d appreciate som

3条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-23 17:02

    Here's how I implemented Event logging. I created a generic ILogger interface so I can swap in different logging mechanisms:

    interface ILogger
    {
        void Debug(string text);
    
        void Warn(string text);
    
        void Error(string text);
        void Error(string text, Exception ex);
    }
    

    My implementation class is very simple:

    class EventLogger : ILogger
    {
        public void Debug(string text)
        {
            EventLog.WriteEntry("MyAppName", text, EventLogEntryType.Information);
        }
    
        public void Warn(string text)
        {
            EventLog.WriteEntry("MyAppName", text, EventLogEntryType.Warning);
        }
    
        public void Error(string text)
        {
            EventLog.WriteEntry("MyAppName", text, EventLogEntryType.Error);
        }
    
        public void Error(string text, Exception ex)
        {
            Error(text);
            Error(ex.StackTrace);
        }
    }
    

    Note that I do not instantiate EventLog. To use my logger class I just have the following reference (you could have this returned by a static factory method):

    private static readonly ILogger log = new EventLogger();
    

    And the actual usage is like this:

    try
    {
        // business logic
    }
    catch (Exception ex)
    {
        log.Error("Exception in MyMethodName()", ex);
    }
    

提交回复
热议问题