• C#中的一种按日期分文件夹的日志写法


    众所周知,日志是调试程序的有效途径,有一个好的日志代码,是一个程序小猿梦寐以求的。

    以下是我结合网上资源自己总结的一小段代码,请笑纳:

    转载请注明来源: http://www.cnblogs.com/benpao/p/3766644.html

    using System.Text;
    using System.IO;

    public class Log
        {
            private static LogManager logManager;
            static Log()
            {
                logManager = new LogManager();
            }
    
            public static void WriteLog(LogFile logFile, string msg)
            {
                try
                {
                    logManager.WriteLog(logFile, msg);
                }
                catch
                {
                }
            }
    
            public static void WriteLog(string msg)
            {
                try
                {
                    logManager.WriteLog(LogFile.Info, msg);
                }
                catch
                {
                }
            }
    
            public static void WriteLog(string logFile, string msg)
            {
                try
                {
                    logManager.WriteLog(logFile, msg);
                }
                catch
                {
    
                }
            }
        }
    
        public class LogManager
        {
            private string logFileName = string.Empty;
            private string logPath = "Log";
            private string logFileExtName = "log";
            private bool writeLogTime = true;
            private bool logFileNameEndWithDate = true;
            private Encoding logFileEncoding = Encoding.UTF8;
            private object obj = new object();
    
    
            #region 构造函数
            public LogManager()
            {
                this.LogPath = "Log";
                this.LogFileExtName = "log";
                this.WriteLogTime = true;
                this.logFileNameEndWithDate = true;
                this.logFileEncoding = Encoding.UTF8;
            }
            public LogManager(string logPath, string logFileExtName, bool writeLogTime)
            {
                this.LogPath = logPath;
                this.LogFileExtName = logFileExtName;
                this.WriteLogTime = writeLogTime;
                this.logFileNameEndWithDate = true;
                this.logFileEncoding = Encoding.UTF8;
            }
    
            #endregion
    
            #region 属性
            /// <summary>
            /// Log 文件路径
            /// </summary>
            public string LogPath
            {
                get
                {
                    if (this.logPath == null || this.logPath == string.Empty)
                    {
                        //Application.StartupPath
                        this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd"));
                    }
                    return this.logPath;
                }
                set
                {
                    this.logPath = value;
                    if (this.logPath == null || this.logPath == string.Empty)
                    {
                        //Application.StartupPath
                        this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd"));
                    }
                    else
                    {
                        try
                        {
                            // 判断是否不是绝对路径(绝对路径里还有":")
                            if (this.logPath.IndexOf(Path.VolumeSeparatorChar) >= 0)
                            { /* 绝对路径 */}
                            else
                            {
                                // 相对路径
                                this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory + this.logPath, DateTime.Now.ToString("yyyy-MM-dd"));
                            }
                            if (!Directory.Exists(this.logPath))
                                Directory.CreateDirectory(this.logPath);
                        }
                        catch
                        {
                            this.logPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, DateTime.Now.ToString("yyyy-MM-dd"));
                        }
                        if (!this.logPath.EndsWith(@""))
                            this.logPath += @"";
                    }
                }
            }
    
            /// <summary>
            /// Log 文件扩展名
            /// </summary>
            public string LogFileExtName
            {
                get { return this.logFileExtName; }
                set { this.logFileExtName = value; }
            }
    
            /// <summary>
            /// 是否在每个Log行前面添加当前时间
            /// </summary>
            public bool WriteLogTime
            {
                get { return this.writeLogTime; }
                set { this.writeLogTime = value; }
            }
    
            /// <summary>
            /// 日志文件名是否带日期
            /// </summary>
            public bool LogFileNameEndWithDate
            {
                get { return logFileNameEndWithDate; }
                set { logFileNameEndWithDate = value; }
            }
    
            /// <summary>
            /// 日志文件的字符编码
            /// </summary>
            public Encoding LogFileEncoding
            {
                get { return logFileEncoding; }
                set { logFileEncoding = value; }
            }
            #endregion
    
            #region 公有方法
            public void WriteLog(string logFile, string msg)
            {
                lock (obj)
                {
                    try
                    {
                        string dateString = string.Empty;
                        if (this.logFileNameEndWithDate || logFile.Length == 0)
                        {
                            dateString = DateTime.Now.ToString("yyyyMMdd");
                        }
    
                        logFileName = string.Format("{0}{1}{2}.{3}",
                                                    this.LogPath,
                                                    logFile,
                                                    dateString,
                                                    this.logFileExtName);
                        using (StreamWriter sw = new StreamWriter(logFileName, true, logFileEncoding))
                        {
                            if (writeLogTime)
                            {
                                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss: ") + msg);
                            }
                            else
                            {
                                sw.WriteLine(msg);
                            }
                        }
                    }
                    catch
                    {
    
                    }
                }
            }
    
            public void WriteLog(LogFile logFile, string msg)
            {
                this.WriteLog(logFile.ToString(), msg);
            }
    
            public void WriteLog(string msg)
            {
                this.WriteLog(string.Empty, msg);
            }
    
            #endregion
        }
    
        public enum LogFile
        {
            Trace,
            Error,
            SQL,
            SQLError,
            Login,
            Info,
            WeChat
        }

    码农都是有尊严的

    转载请注明来源,谢谢

    http://www.cnblogs.com/benpao/

  • 相关阅读:
    python3 入门
    Python2 的列表排序
    数据库阻塞SQL的隔离级别
    数据库阻塞讲解设计应用程序时避免阻塞的八个准则
    DELPHI学习简单类型
    DELPHI学习结构类型
    InsideVCL第3章面向对象程序语言和Framework
    数据库阻塞分析死锁并处理
    面向对象开发实践之路
    DELPHI hint 的应用
  • 原文地址:https://www.cnblogs.com/benpao/p/3766644.html
Copyright © 2020-2023  润新知