c#封装日志常用操作

封装了一个日志操作,并把日志分了级别,

    /// <summary>
    /// 一个简单的log助手
    /// 使用步骤如下
    /// 1.在项目的配置文件的appSettings节点先添加一个节点,命名成LogLevel,例如
    ///  <add key="LogLevel" value="Debug" />
    /// 2.LogHelper.GetInstance,判断为true
    /// 3.调用Write***方法
    /// </summary>
    public sealed class LogHelper
    {
        enum LogLevel
        {
            Debug, Info, Warning, Error
        }


        private static LogLevel? _logLevel = null;
        private static LogHelper _logHelper;
        private static readonly object SyncObject = new object();
        private static StreamWriter _streamWriter;


        private LogHelper()
        {
        }


        /// <summary>
        /// 得到log助手
        /// </summary>
        /// <param name="logFilePath"></param>
        /// <returns></returns>
        public static LogHelper GetInstance(string logFilePath)
        {
            if (_logHelper == null)
            {
                lock (SyncObject)
                {
                    if (_logHelper == null)
                    {
                        if (InitWriteLogPathAndLevel(logFilePath))
                        {
                            _logHelper = new LogHelper();
                        }
                        else
                        {
                            return null;
                        }  
                    }
                }
            }
            return _logHelper;
        }


        /// <summary>
        /// 初始化日志文件路径和日志级别
        /// </summary>
        /// <param name="logFilePath"></param>
        /// <returns></returns>
        private static bool InitWriteLogPathAndLevel(string logFilePath)
        {
            try
            {
                //初始化日志路径
                if (!File.Exists(logFilePath))
                {
                    File.Create(logFilePath);
                }
                _streamWriter = new StreamWriter(logFilePath, true, Encoding.UTF8);
                //初始化日志级别
                string level = ConfigurationManager.AppSettings["LogLevel"];
                foreach (string name in Enum.GetNames(typeof (LogLevel)))
                {
                    if (level.ToLower() == name.ToLower())
                    {
                        _logLevel = (LogLevel) Enum.Parse(typeof (LogLevel), level, true);
                        break;
                    }
                }
                if (_streamWriter != null && _logLevel != null)
                {
                    return true;
                }
            }
            catch (Exception e)
            {
                if (_streamWriter != null)
                {
                    _streamWriter.Close();
                }
                return false;
            }


            return false;
        }
        /// <summary>
        /// 记录调试信息
        /// </summary>
        /// <param name="debug">自定义格式的调试信息,最好是时间-程序集-类-方法-调试信息的格式,方便定位信息的出处,可以进一步封装,这里就不带劳了</param>
        /// <returns></returns>
        public static bool WriteDebugLog(string debug)
        {
            if (Convert.ToInt32(_logLevel) <= Convert.ToInt32(LogLevel.Debug) && _streamWriter != null)
            {
                _streamWriter.WriteLine("******DebugInfo*****" + debug);
                _streamWriter.Flush();
                return true;
            }
            return false;
        }
        /// <summary>
        /// 记录一般信息
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static bool WriteInfoLog(string info)
        {
            if (Convert.ToInt32(_logLevel) <= Convert.ToInt32(LogLevel.Info) && _streamWriter != null)
            {
                _streamWriter.WriteLine("#####Info#####" + info);
                _streamWriter.Flush();
                return true;
            }
            return false;
        }
        /// <summary>
        /// 记录警告信息
        /// </summary>
        /// <param name="warning"></param>
        /// <returns></returns>
        public static bool WriteWarningLog(string warning)
        {
            if (Convert.ToInt32(_logLevel) <= Convert.ToInt32(LogLevel.Warning) && _streamWriter != null)
            {
                _streamWriter.WriteLine("?????WarningInfo?????" + warning);
                _streamWriter.Flush();
                return true;
            }
            return false;
        }
        /// <summary>
        /// 记录错误信息
        /// </summary>
        /// <param name="error"></param>
        /// <returns></returns>
        public static bool WriteErrorLog(string error)
        {
            if (Convert.ToInt32(_logLevel) <= Convert.ToInt32(LogLevel.Info) && _streamWriter != null)
            {
                _streamWriter.WriteLine("!!!!!ErroInfo!!!!!" + error);
                _streamWriter.Flush();
                return true;
            }
            return false;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值