zoukankan      html  css  js  c++  java
  • 一个简单实用的C#日志类(第二版)

    public static class Log
    {
        
    private static LogManager logManager;
        
    static Log()
        {
            logManager 
    = new LogManager();
        }

        
    public static void WriteLog(LogFile logFile, string msg)
        {
            logManager.WriteLog(logFile, msg);
        }

        
    public static void WriteLog(string logFile, string msg)
        {
            logManager.WriteLog(logFile, msg);
        }
    }
    LogManager
    using System;
    using System.Text;
    using System.IO;

    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 = AppDomain.CurrentDomain.BaseDirectory;
                }
                
    return this.logPath;
            }
            
    set
            {
                
    this.logPath = value;
                
    if (this.logPath == null || this.logPath == string.Empty)
                {
                    
    //Application.StartupPath
                    this.logPath = AppDomain.CurrentDomain.BaseDirectory;
                }
                
    else
                {
                    
    try
                    {
                        
    // 判断是否不是绝对路径(绝对路径里还有":")
                        if (this.logPath.IndexOf(Path.VolumeSeparatorChar) >= 0)
                        { 
    /* 绝对路径 */}
                        
    else
                        {
                            
    // 相对路径
                            this.logPath = AppDomain.CurrentDomain.BaseDirectory + this.logPath;
                        }
                        
    if (!Directory.Exists(this.logPath))
                            Directory.CreateDirectory(
    this.logPath);
                    }
                    
    catch
                    {
                        
    this.logPath = AppDomain.CurrentDomain.BaseDirectory;
                    }
                    
    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
    }

     第一版:一个简单实用的C#日志类(第一版)

  • 相关阅读:
    Could not load file or assembly Microsoft.SqlServer.management.sdk.sfc version 11.0.0.0
    代码覆盖率 (Code Coverage)从简到繁 (一)
    vscode配置自动格式化eslint 配置模板
    无效的源发行版: 10
    java读取一个文件写入另外一个文件
    notepad++使用正则表达式匹配
    jsp页面返回字符串而非方法执行后取得的数据?
    maven的原始setting.xml文件,自带阿里云镜像,之前配的时候出错,保存一下,注意可以在localRepository处设置存储依赖的地址,大概在49到54行,我的是<localRepository>F:/MavenRepository</localRepository>,F盘要先有这个文件夹
    Java 8 lambda Stream list to Map key 重复 value合并到Collection
    BufferedReader.readLine()读取文件
  • 原文地址:https://www.cnblogs.com/anjou/p/1965414.html
Copyright © 2011-2022 走看看