C#log4net日志封装

35 篇文章 0 订阅

1.新建一个log4net.xml的xml文件:

 

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="LogFile" type="log4net.Appender.RollingFileAppender,log4net">
    <param name="File" value="AppLog\\Log_" />
    <param name="AppendToFile" value="true" />
    <param name="RollingStyle" value="Date" />
    <param name="DatePattern" value="yyyyMMdd".log""/>
    <param name="StaticLogFileName" value="false" />
    <layout type="log4net.Layout.PatternLayout,log4net">
      <!--定义输出风格-->
      <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      <param name="Header" value="
----------------------Log--------------------------
" />
      <param name="Footer" value="
----------------------Log End--------------------------
" />
    </layout>
  </appender>


  <logger name="logApp">
    <!--定义logger对象的名字为logApp,以方便在代码中使用,<logger>
        配置项可以不配置-->
    <level value="ALL" />
    <!--定义输出的信息等级为所有其中包括Fatal.Error.Warn.Info.Debug-->
  </logger>
  <root>
    <!--定义日志输出的方式和等级-->
    <level value="INFO" />
    <appender-ref ref="LogFile" />
    <!--选择了文件输出,注意粗体部分对应的名称-->
  </root>
</log4net>

 

 

 

 

 

 

 

2.新建一个类名:LogManagement

 

private LogManagement()
        {
            try
            {
                IsCloseInfo = false;
                IsCloseError = false;
                string sCfgPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.xml");
                if (!File.Exists(sCfgPath)) return;


                log4net.Config.XmlConfigurator.Configure(new FileInfo(sCfgPath));
                string sPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.dll");
                if (!File.Exists(sPath)) return;


                log = log4net.LogManager.GetLogger("logApp");
            }
            catch(Exception ex)
            {
                WriteSysLog(ex);
            }
        }


        private void WriteSysLog(Exception ex)
        {
            EventLog sysLog = new EventLog("Eventlog2", ".", "Eventlog2");
            sysLog.WriteEntry(ex.Message, EventLogEntryType.Error);
            sysLog = null;
        }


        private ILog log;


        private static LogManagement _logger;


        /// <summary>
        /// 日志实例
        /// </summary>
        public static LogManagement Logger
        {
            get
            {
                if (_logger == null) _logger = new LogManagement();


                return _logger;
            }
        }


        /// <summary>
        /// 写入异常日志
        /// </summary>
        /// <param name="sDesc">描述</param>
        /// <param name="ex">异常类</param>
        public void WriteError(string sDesc, Exception ex)
        {
            if (log == null || IsCloseError) return;
            try
            {
                if (log.IsErrorEnabled)
                    log.Error(sDesc, ex);
                else
                    WriteSysLog(ex);
            }
            catch// (Exception ex)
            {
            }
        }


        /// <summary>
        /// 写入记录日期
        /// </summary>
        /// <param name="sMsg">错误信息</param>
        public void WriteInfo(string sMsg)
        {
            if (log == null || IsCloseInfo) return;
            try
            {
                if (log.IsInfoEnabled)
                    log.Info(sMsg);
            }
            catch// (Exception ex)
            {
            }
        }


        /// <summary>
        /// 关闭错误日志输出
        /// </summary>
        public bool IsCloseError
        {
            get;
            set;
        }


        /// <summary>
        /// 关闭信息日志输出
        /// </summary>
        public bool IsCloseInfo
        {
            get;
            set;
        }


        /// <summary>
        /// 关闭所有日志输出
        /// </summary>
        public bool IsCloseAll
        {
            get 
            {
                return IsCloseError && IsCloseInfo;
            }
            set
            {
                IsCloseError = value;
                IsCloseInfo = value;
            }
        }

 

 

 

 

 

 

3.调用这个日志功能,用LogManagement.WriteInfo("",ex);  这个调用是一个单实例。

去网上下载一个log4net.dll

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值