天天看點

log4net 自定義level

第一步:建立一個類來定義level

public static class SyncLevel
    {
        public static readonly log4net.Core.Level SYNCLevel = new log4net.Core.Level(50000, "SYNC"); 

        public static void Sync(this ILog log, string message)
        {
            log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
                SYNCLevel, message, null);
        }

        public static void SyncFormat(this ILog log, string message, params object[] args)
        {
            string formattedMessage = string.Format(message, args);
            log.Logger.Log(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType,
                SYNCLevel, formattedMessage, null);
        }
    }      
.LogManager.GetRepository().LevelMap.Add(Cls.SyncLevel.SYNCLevel);
            log4net.Config.XmlConfigurator.Configure();      
<!--按日志容量分割日志檔案 10KB一個-->
    <appender name="LogFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
      <!--是否續寫-->
      <param name="AppendToFile" value="true"/>
      <!--最小鎖定模型以允許多個程序可以寫入同一個檔案-->
      <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock"/>
      <param name="StaticLogFileName" value="true"/>
      <!--按照檔案的大小進行變換日志檔案-->
      <param name="RollingStyle" value="Size"/>
      <param name="File" value="logs/sync/sync.log"/>
      <!--單個檔案最大數量 好像隻有在 按Size分割時有效-->
      <param name="MaximumFileSize" value="10240KB"/>
      <!--保留的log檔案數量 超過此數量後 自動删除之前的   好像隻有在 按Size分割時有效-->
      <param name="MaxSizeRollBackups" value="20000"/>
      <param name="StaticLogFileName" value="false"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="發生時間:%d %n事件級别:%level %n相關類名:%c%n程式檔案:%F 第%L行%n日志内容:%m%n-----------------------------------------%n%n"/>
      </layout>
      <filter type="log4net.Filter.LevelMatchFilter">
        <acceptOnMatch value="true"
        <levelToMatch value="SYNC"
      </filter>
      <filter type="log4net.Filter.DenyAllFilter"
    </appender>      

繼續閱讀