1.程序中应用添加 log4的程序集,可通过nuget添加

Log4 使用小结

2.添加log4.Net.config 文件

Log4 使用小结

并修改配置如下:


<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
  </configSections>
 
  <log4net debug="true">
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="ADSLog.log" />
      <!--file可以指定具体的路径 eg : d:\\test.log。不指定的话log被生成在项目的bin/Debug 或者 bin/Release目录下 (web的项目 默认生成在根目录下)-->
      <appendToFile value="true" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <!--备份log文件的个数最多10个-->
      <maximumFileSize value="2MB" />
      <!--每个log文件最大是2M,如果超过2M将重新创建一个新的log文件,并将原来的log文件备份。-->
      <staticLogFileName value="true" />
      <layout type="log4net.Layout.PatternLayout">
        <!--指定log的格式-->
        <conversionPattern value="[%date]  %thread -- %-5level -- %logger [%M] -- %message%newline" />
      </layout>
    </appender>
 
    <root>
      <level value="DEBUG" />
      <!--指定将此级别及以上的log打印到log文件中-->
      <appender-ref ref="RollingLogFileAppender" />
    </root>
  </log4net>
</configuration>

3.logHelper的添加
代码如下:
using System;
using System.IO;
using System.Linq;
using System.Text;
using log4net;
 
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"log4net.config", Watch = true)]
namespace AUDS2000.Common
{
    public static class LogHelper
    {
        private static log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public static void Info(Exception ex)
        {
            logger.Info(ex.GetExMsg());
        }
        
        public static void Info(string info, Exception ex = null)
        {
            if (ex == null)
                logger.Info(info);
            else
                logger.Info(info, ex);
        }
        
        public static void Debug(Exception ex)
        {
            logger.Debug(ex.GetExMsg());
        }
        public static void Debug(string info, Exception ex = null)
        {
            if (ex == null)
                logger.Debug(info);
            else
                logger.Debug(info, ex);
        }
        public static void Error(Exception ex)
        {
            logger.Error(ex.GetExMsg());
        }
        public static void Error(string info, Exception ex = null)
        {
            if (ex == null)
                logger.Error(info);
            else
                logger.Error(info, ex);
        }
 
 
        #region Exception扩展
        public static string GetExMsg(this Exception ex)
        {
            if (ex == null)
                return string.Empty;
            var res = string.Empty;
            if (!string.IsNullOrEmpty(ex.StackTrace))
                res = ex.StackTrace + ",";
            if (ex.InnerException != null && !string.IsNullOrEmpty(ex.InnerException.Message))
                res += ex.InnerException.Message;
            else
                res += ex.Message;
            return res;
        }
        #endregion
    }
}

注意:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = @"log4net.config", Watch = true)]
这个可以不用写,但是需要到全局的assembly文件中添加,两者保留一个即可。
可以直接通过helper直接记录日志。

demo下载


相关文章: