[外包]!采用asp.net core 快速構建小型創業公司后台管理系統(四.Log4Net的簡單配置)


接着上一章繼續嘮

這一章主要說一下

  • Log4Net在我項目里的配置,

另外群里有人說serilog是最好用的,這個我也用過,感覺就那樣吧,以前還自己寫log

一.基礎配置類

  

  infrastructure下直接一個Log4Net配置文件

  代碼如下:

  

/// <summary>
    /// 日志服務
    /// </summary>
    public class Log4Net
    {
        /// <summary>
        /// 定義日志容器
        /// </summary>
        private static ILoggerRepository _repository = LogManager.CreateRepository(TbConstant.Log4RepositoryKey);
        /// <summary>
        /// 定義日志配置文件
        /// </summary>
        private static FileInfo LogConfig = new FileInfo(ConfigLocator.Instance[TbConstant.Log4netKey]);
        /// <summary>
        /// 定義接口參數
        /// </summary>
        /// <returns></returns>
        private static ILog SetLog()
        {
            var _MethodName = string.Empty;
            try
            {
                StackFrame _Call = new StackFrame(2);
                _MethodName = string.Format("{0}.{1}", _Call.GetMethod().ReflectedType.FullName, _Call.GetMethod().Name);
                var _St = new StackTrace().GetFrames();
                foreach (var _item in _St)
                {
                    if (_item.GetMethod().DeclaringType.ToString().EndsWith("Exception") && _St.Length > 2)
                    {
                        _MethodName = string.Format("{0}.{1}", _item.GetMethod().ReflectedType.FullName, _item.GetMethod().Name);
                        continue;
                    }
                }
            }
            catch { }
            XmlConfigurator.Configure(_repository, LogConfig);
            return LogManager.GetLogger(_repository.Name, _MethodName);
        }

        #region 異常日志
        /// <summary>
        /// 異常日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        public static void Debug(object msg)
        {
            SetLog().Debug(msg);
        }
        /// <summary>
        /// 異常日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        /// <param name="ex">異常信息</param>
        public static void Debug(object msg, Exception ex)
        {
            SetLog().Debug(msg, ex);
        }
        #endregion

        #region 錯誤日志
        /// <summary>
        /// 錯誤日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        public static void Error(object msg)
        {
            SetLog().Error(msg);
        }
        /// <summary>
        /// 錯誤日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        /// <param name="ex">異常信息</param>
        public static void Error(object msg, Exception ex)
        {
            SetLog().Error(msg, ex);
        }
        #endregion

        #region 數據日志
        /// <summary>
        /// 數據日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        public static void Info(object msg)
        {
            SetLog().Info(msg);
        }
        /// <summary>
        /// 數據日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        /// <param name="ex">異常信息</param>
        public static void Info(object msg, Exception ex)
        {
            SetLog().Info(msg, ex);
        }
        #endregion

        #region 警告日志
        /// <summary>
        /// 警告日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        public static void Warn(object msg)
        {
            SetLog().Warn(msg);
        }
        /// <summary>
        /// 警告日志
        /// </summary>
        /// <param name="msg">錯誤信息</param>
        /// <param name="ex">異常信息</param>
        public static void Warn(object msg, Exception ex)
        {
            SetLog().Warn(msg, ex);
        }
        #endregion
    }

  主要說一下這兩句

     /// <summary>
        /// 定義日志容器
        /// </summary>
        private static ILoggerRepository _repository = LogManager.CreateRepository(TbConstant.Log4RepositoryKey);
        /// <summary>
        /// 定義日志配置文件
        /// </summary>
        private static FileInfo LogConfig = new FileInfo(ConfigLocator.Instance[TbConstant.Log4netKey]);
  CreateRepository里傳入自定義key
 

  

  第二句傳入log4net配置文件路徑

  如圖:

  

  代碼如下:配置還是老配置

  

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <log4net>
    <!--錯誤日志-->
    <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <param name="File" value="Log/Error/" />
      <param name="AppendToFile" value="true" />
      <param name="rollingStyle" value="Date" />
      <param name="datePattern" value="yyyy-MM-dd.'error.log'" />
      <param name="staticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n%n%n記錄時間:%date %n日志級別:  %-5level %n類及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="ERROR" />
        <param name="LevelMax" value="ERROR" />
      </filter>
    </appender>
    <!--警告日志-->
    <appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <param name="File" value="Log/Warn/" />
      <param name="AppendToFile" value="true" />
      <param name="rollingStyle" value="Date" />
      <param name="datePattern" value="yyyy-MM-dd.'warn.log'" />
      <param name="staticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n%n%n記錄時間:%date %n日志級別:  %-5level %n類及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="WARN" />
        <param name="LevelMax" value="WARN" />
      </filter>
    </appender>
    <!--數據日志-->
    <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <param name="File" value="Log/Info/" />
      <param name="AppendToFile" value="true" />
      <param name="rollingStyle" value="Date" />
      <param name="datePattern" value="yyyy-MM-dd.'Info.log'" />
      <param name="staticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n%n%n記錄時間:%date %n日志級別:  %-5level %n類及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO" />
        <param name="LevelMax" value="INFO" />
      </filter>
    </appender>
    <!--異常日志-->
    <appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <param name="File" value="Log/Debug/" />
      <param name="AppendToFile" value="true" />
      <param name="rollingStyle" value="Date" />
      <param name="datePattern" value="yyyy-MM-dd.'debug.log'" />
      <param name="staticLogFileName" value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n%n%n記錄時間:%date %n日志級別:  %-5level %n類及方法:%logger  %n描述:%message %newline%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG" />
        <param name="LevelMax" value="DEBUG" />
      </filter>
    </appender>
    <root>
      <level value="DEBUG" />
      <!--文件形式記錄日志-->
      <appender-ref ref="ErrorRollingFileAppender" />
      <appender-ref ref="DebugRollingFileAppender" />
      <appender-ref ref="InfoRollingFileAppender" />
      <appender-ref ref="WarnRollingFileAppender" />
    </root>
  </log4net>
</configuration>

  二.測試結果

  

  

  在你想記錄日至的地方,直接用Log4Net點他的四種日志類型,Info,Error,Warn,Debug

  他會在你項目根目錄下生成Log文件夾,並包含四種類型日志,按日期划分

  

  日志內容如下:

  

  日志記錄這塊我就講到這里

  另外今天我對這個項目加了quartz計划任務管理模塊,還加了報表導出

  

  

  

  

  這個內容就下一章嘮吧

  下章內容

  • quartz計划任務管理
  • 權限模塊
  • 備注:項目瀏覽地址:http://xingchenbeta.52expo.top/Welcome
  • 用戶名 admin 密碼 123456
  • 不要使用admin 用戶測試權限,不要禁用admin用戶

 

 

 

 

 
        
 
        
 
        
 

 


免責聲明!

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



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