C# web項目 log4net 使用


1.在VS的管理Nuget中安裝 log4net

2.配置 webconfig

在configurations 節點 插入如下代碼:

 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

然后再配置完整的log4net信息:我將error與info信息分開記錄

<log4net>
    <!-- OFF, FATAL, ERROR, WARN, INFO, DEBUG, ALL -->
    <!-- 設置日志類型,root節點比logger優先 -->
    <!--
    <root>
      <level value="ALL" />
      <appender-ref ref="info_log" />
    </root>
    -->
    <!-- 設置節點 -->
    <logger name="InfoLogger">
      <level value="INFO" />
      <appender-ref ref="info_log" />
    </logger>
    <logger name="ErrorLogger">
      <level value="ERROR" />
      <level value="WARN" />
      <appender-ref ref="error_log" />
    </logger>
    <!-- 節點信息明細設置 ,講info與error分別記錄-->
    <appender name="info_log" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log4/" /> 
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>
    <appender name="error_log" type="log4net.Appender.RollingFileAppender">
      <param name="File" value="log4/" /> 
      <param name="AppendToFile" value="true" />
      <param name="RollingStyle" value="Date" />
      <param name="DatePattern" value="&quot;Error_&quot;yyyyMMdd&quot;.txt&quot;" />
      <param name="StaticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout,log4net">
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
      </layout>
    </appender>  
  </log4net>

代碼中的使用,使用2個幫助類:

 public static class LogFactory
    {
        /// <summary>
        /// 解析Xml的路徑
        /// </summary>
        public const string Config = "~/Web.Config";

        /// <summary>
        /// 錯誤日志的標簽
        /// </summary>
        public const string Error = "ErrorLogger";

        /// <summary>
        /// 日志記錄的標簽
        /// </summary>
        public const string Info = "InfoLogger";

        /// <summary>
        /// 初始化
        /// </summary>
        public static void LogInitialize()
        {
            log4net.Config.XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo(System.Web.HttpContext.Current.Server.MapPath(Config)));
        }
    }

loghelper.cs

  /// <summary> 日志輔助類 log4net
    /// </summary>
    public static class LogHelper
    {
        /// <summary> 錯誤日志
        /// </summary>
        /// <param name="msg"></param>
        public static void Error(string msg)
        {
            var log = LogManager.GetLogger(LogFactory.Error);
            log.Error(msg);
        }

        /// <summary> 錯誤日志,帶異常
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Error(string msg, Exception ex)
        {           
            var log = LogManager.GetLogger(LogFactory.Error);
            log.Error(msg, ex);
        }

        /// <summary> 日志記錄
        /// </summary>
        /// <param name="msg"></param>
        public static void Info(string msg)
        {           
           var log = LogManager.GetLogger(LogFactory.Info);
            log.Info(msg);
        }

        /// <summary> 日志記錄
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Info(string msg, Exception ex)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.Info(msg, ex);
        }

        /// <summary> Debug日志記錄
        /// </summary>
        /// <param name="msg"></param>
        public static void Debug(string msg)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.Debug(msg);
        }

        /// <summary> Debug日志記錄
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="ex"></param>
        public static void Debug(string msg, Exception ex)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.Debug(msg, ex);
        }

        /// <summary> Format日志記錄
        /// </summary>
        /// <param name="format"></param>
        /// <param name="arg0"></param>
        public static void Format(string format, object arg0)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.InfoFormat(format, arg0);
        }

        /// <summary> Format日志記錄
        /// </summary>
        /// <param name="format"></param>
        /// <param name="arg0"></param>
        /// <param name="arg1"></param>
        public static void Format(string format, object arg0, object arg1)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.InfoFormat(format, arg0, arg1);
        }

        /// <summary> Format日志記錄
        /// </summary>
        /// <param name="format"></param>
        /// <param name="arg0"></param>
        /// <param name="arg1"></param>
        /// <param name="arg2"></param>
        public static void Format(string format, object arg0, object arg1, object arg2)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.InfoFormat(format, arg0, arg1, arg2);
        }

        /// <summary> Format日志記錄
        /// </summary>
        /// <param name="format"></param>
        /// <param name="provider"></param>
        /// <param name="args"></param>
        public static void Format(IFormatProvider provider, string format, params object[] args)
        {
            var log = LogManager.GetLogger(LogFactory.Info);
            log.InfoFormat(provider, format, args);
        }
    }
View Code

在Global.asax中配置初始化

LogFactory.LogInitialize();

測試頁面調用:

   public ActionResult Login(LoginModel loginM)
        {           
            //返回結果類
            ResultModel rd = new ResultModel();
            //接收前端數據 
            string _account = loginM.Account;
            string _password = loginM.password;   
        
            //調用api驗證獲取返回值
            LogHelper.Info("調用api記錄");       //記錄日志
   
            //登陸成功,授權並記錄         
            rd.Status = statuslist.成功;
            rd.ResultMessage = "數據已經收到";
            rd.ResulData = new string[] { _account, _password };//數組
            //賦予jsonresult data
            rd.Data = new { rd.Status, rd.ResultMessage, rd.ResulData };
            
       
         
            return rd;
        }
View Code

 保存日志文件內容為亂碼的情況,需要在log4net設置中添加:

 <param name="Encoding" value="utf-8" />

即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM