Simple way to perform error logging?

后端 未结 9 1490
佛祖请我去吃肉
佛祖请我去吃肉 2021-01-30 03:52

I\'ve created a small C# winforms application, as an added feature I was considering adding some form of error logging into it. Anyone have any suggestions for good ways to go a

9条回答
  •  轻奢々
    轻奢々 (楼主)
    2021-01-30 04:37

    Instead of using log4net which is an external library I have created my own simple class, highly customizable and easy to use (edit YOURNAMESPACEHERE with the namespace that you need).

    CONSOLE APP

    using System;
    using System.IO;
    
    namespace YOURNAMESPACEHERE
    {
        enum LogEvent
        {
            Info = 0,
            Success = 1,
            Warning = 2,
            Error = 3
        }
    
        internal static class Log
        {
            private static readonly string LogSession = DateTime.Now.ToLocalTime().ToString("ddMMyyyy_HHmmss");
            private static readonly string LogPath = AppDomain.CurrentDomain.BaseDirectory + "logs";
    
            internal static void Write(LogEvent Level, string Message, bool ShowConsole = true, bool WritelogFile = true)
            {
                string Event = string.Empty;
                ConsoleColor ColorEvent = Console.ForegroundColor;
    
                switch (Level)
                {
                    case LogEvent.Info:
                        Event = "INFO";
                        ColorEvent = ConsoleColor.White;
                        break;
                    case LogEvent.Success:
                        Event = "SUCCESS";
                        ColorEvent = ConsoleColor.Green;
                        break;
                    case LogEvent.Warning:
                        Event = "WARNING";
                        ColorEvent = ConsoleColor.Yellow;
                        break;
                    case LogEvent.Error:
                        Event = "ERROR";
                        ColorEvent = ConsoleColor.Red;
                        break;
                }
    
                if (ShowConsole)
                {
                    Console.ForegroundColor = ColorEvent;
                    Console.WriteLine(" [{0}] => {1}", DateTime.Now.ToString("HH:mm:ss"), Message);
                    Console.ResetColor();
                }
    
                if (WritelogFile)
                {
                    if (!Directory.Exists(LogPath))
                        Directory.CreateDirectory(LogPath);
    
                    File.AppendAllText(LogPath + @"\" + LogSession + ".log", string.Format("[{0}] => {1}: {2}\n", DateTime.Now.ToString("HH:mm:ss"), Event, Message));
                }
            }
        }
    }
    

    NO CONSOLE APP (ONLY LOG)

    using System;
    using System.IO;
    
    namespace YOURNAMESPACEHERE
    {
        enum LogEvent
        {
            Info = 0,
            Success = 1,
            Warning = 2,
            Error = 3
        }
    
    internal static class Log
    {
        private static readonly string LogSession = DateTime.Now.ToLocalTime().ToString("ddMMyyyy_HHmmss");
        private static readonly string LogPath = AppDomain.CurrentDomain.BaseDirectory + "logs";
    
        internal static void Write(LogEvent Level, string Message)
        {
            string Event = string.Empty;
    
            switch (Level)
            {
                case LogEvent.Info:
                    Event = "INFO";
                    break;
                case LogEvent.Success:
                    Event = "SUCCESS";
                    break;
                case LogEvent.Warning:
                    Event = "WARNING";
                    break;
                case LogEvent.Error:
                    Event = "ERROR";
                    break;
            }
    
            if (!Directory.Exists(LogPath))
                Directory.CreateDirectory(LogPath);
    
            File.AppendAllText(LogPath + @"\" + LogSession + ".log", string.Format("[{0}] => {1}: {2}\n", DateTime.Now.ToString("HH:mm:ss"), Event, Message));
        }
    }
    

    Usage:

    CONSOLE APP

    Log.Write(LogEvent.Info, "Test message"); // It will print an info in your console, also will save a copy of this print in a .log file.
    Log.Write(LogEvent.Warning, "Test message", false); // It will save the print as warning only in your .log file.
    Log.Write(LogEvent.Error, "Test message", true, false); // It will print an error only in your console.
    

    NO CONSOLE APP (ONLY LOG)

    Log.Write(LogEvent.Info, "Test message"); // It will print an info in your .log file.
    

提交回复
热议问题