C# Asp.net MvC 使用Log4Net 日誌組件

1. 首先要下載 log4net.2.0.8 組件Dll 引用 放在自己的項目中 , 在自己的web項目中找到 Global.asax文件Application_Start 方法中      加載你的 log4net.config 日誌配置文件

 protected void Application_Start()
        {
          
            log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("/Config/Log4Net.config")));
        }

log4net.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net>
    <appender name="AdoNetAppender_file" type="log4net.Appender.RollingFileAppender">
      <!--日誌文件路徑,按文件大小方式輸出時在這裏指定文件名,並且前面的日誌按天在文件名後自動添加當天日期形成文件-->
      <param name= "File" value= "Log\\"/>
      <!--是否是向文件中追加日誌-->
      <param name= "AppendToFile" value= "true"/>
      <!--記錄日誌寫入文件時,不鎖定文本文件-->
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--Unicode編碼-->
      <Encoding value="UTF-8" />
      <!--最多產生的日誌文件數,value="-1"爲不限文件數-->
      <param name="MaxSizeRollBackups" value="-1" />
      <!--log保留天數-->
      <param name= "MaxSizeRollBackups" value= "365" />
      <!--日誌文件名是否是固定不變的(是否只寫到一個文件中)-->
      <param name= "StaticLogFileName" value= "false" />
      <!--按照何種方式產生多個日誌文件(日期[Date],文件大小[Size],混合[Composite])-->
      <param name="RollingStyle" value="Date" />
      <!--按日期產生文件夾,文件名[在日期方式與混合方式下使用]日誌文件名格式爲:2008-08-31.log -->
      <param name= "DatePattern" value= "yyyy-MM-dd&quot;.log&quot;"/>
      <!--<param name= "DatePattern" value= "yyyy-MM/yyyy-MM-dd&quot;.log&quot;"/>-->
      <!--每個文件的大小。只在[混合方式與文件大小方式]下使用,超出大小的在文件名後自動增加1重新命名-->
      <param name="maximumFileSize" value="500KB" />
      <!--記錄的格式。-->
      <layout type="log4net.Layout.PatternLayout">
        <!--
        %d, %date     :表示當然的時間
      %p, %level    :表示日誌的級別
      %c, %logger   :表示日誌產生的主題或名稱,通常是所在的類名,便於定位問題
      %m, %message  :表示日誌的具體內容
      %n, %newline  :換行
        %exception    :表示異常信息
        -->
        <param name="ConversionPattern" value="%d [%t] %-5p %c - %m %logger %exception %n" />
      </layout>
    </appender>
    <logger name="SystemLog" additivity="true">
      <level value="ALL"/>
      <appender-ref ref="AdoNetAppender_file" />
    </logger>
  </log4net>
</configuration>

2.Log4Net實體類

using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace UtilityFactory.UtilityRoom
{
    public class Log4Net
    {

        private Log4Net()
        {

        }

        public static readonly ILog log = LogManager.GetLogger("SystemLog");

        public static void Info(object msg)
        {
            if (log.IsInfoEnabled)
            {
                log.Info(JsonUtility.SerializeObject(msg));
            }
        }

        public static void Info(string title, object msg)
        {
            if (log.IsInfoEnabled)
            {
                log.Info(title + ": " + JsonUtility.SerializeObject(msg));
            }
        }

        public static void Info(string msg)
        {
            if (log.IsInfoEnabled)
            {
                log.Info(msg);
            }
        }

        public static void Warn(string msg)
        {
            if (log.IsWarnEnabled)
            {
                log.Warn(msg);
            }
        }

        public static void Debug(object msg)
        {
            if (log.IsDebugEnabled)
            {
                log.Debug(JsonUtility.SerializeObject(msg));
            }
        }

        public static void Debug(string msg)
        {
            if (log.IsDebugEnabled)
            {
                log.Debug(msg);
            }
        }

        public static void Debug(string msg, Exception ex)
        {
            if (log.IsDebugEnabled)
            {
                log.Debug(msg, ex);
            }
        }

        public static void Error(string msg, object obj, Exception ex)
        {
            if (log.IsErrorEnabled)
            {
                log.Error(msg + " " + JsonUtility.SerializeObject(obj), ex);
            }
        }

        public static void Error(string msg, Exception ex)
        {
            if (log.IsErrorEnabled)
            {
                log.Error(msg, ex);
            }
        }

        public static void Fatal(string msg, Exception ex)
        {
            if (log.IsFatalEnabled)
            {
                log.Fatal(msg, ex);
            }
        }


    }

 public class JsonUtility
    {

        /// <summary>
        /// 將對象序列化爲JSON格式
        /// </summary>
        /// <param name="obj">對象</param>
        /// <returns>json字符串</returns>
        public static string SerializeObject(object obj)
        {
            if (obj == null)
            {
                return string.Empty;
            }

            return JsonConvert.SerializeObject(obj);
        }

    }

}

3.調用

Log4Net.Info('記錄日誌!!!');

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章