ABP框架—後臺:日誌log4net(9)

一、Nuget引入log4net依賴包


如圖:

官方地址:http://logging.apache.org/log4net


二、Startup中配置log4net

在ConfigureServices方法中使用容器添加log4net以及配置log4net.config

public class Startup
{
    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        //.............

        //.............


        // Configure Abp and Dependency Injection
        return services.AddAbp<PDWebHostModule>(
            // Configure Log4Net logging
            options => options.IocManager.IocContainer.AddFacility<LoggingFacility>(
                f => f.UseAbpLog4Net().WithConfig("log4net.config")
            )
        );
    }
}

二、log4net.config配置


默認配置:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
  <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender" >
    <file value="App_Data/Logs/Logs.txt" />  --寫入制定文件
    <appendToFile value="true" />    --true 日誌追加寫入文件
    
    --Size 文件大小進行拆分日誌文件Logs.txt 
    --創建新文件的方式,可選爲Size(按文件大小),Date(按日期),Once(每啓動一次創建一個文件),Composite(按日期及文件大小),默認爲Composite
    <rollingStyle value="Size" />    
    
    --備份日誌數目,默認爲0。在CountDirection爲負數時有效。
    <maxSizeRollBackups value="10" />
    
    --當RollingStyle爲Composite或Size,這裏設置最大文件大小(可以KB,MB,GB爲單位,默認爲字節)
    <maximumFileSize value="10000KB" />
    
    --True 日誌文件是否爲靜態
    --True/false,默認爲true。爲true時,RollingStyler的date值將無效。且爲true時,需要在file裏指定文件名,所有日誌都會記錄在這個文件裏。
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />   --日誌格式
    </layout>
  </appender>
  <root>
    <appender-ref ref="RollingFileAppender" />
    --Log4net的日誌等級從低到高依次分爲:ALL ---> DEBUG ---> INFO ---> WARN ---> ERROR ---> FATAL ---> OFF
    --DEBUG及DEBUG以下級別都進行記錄日誌
    <level value="DEBUG" /> 
  </root>
</log4net>

當需要把不同級別日誌進行分文件記錄時,進行如下配置:
 

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="DebugRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="DEBUG">
    <file value="App_Data/Logs/Debug/" /> --日誌文件路徑 
    <appendToFile value="true" />
    <DatePattern value="yyyy-MM-dd_HH&quot;.txt&quot;"/> --日誌文件命名格式
    <RollingStyle value="Date"/>  --Date日期命名
    <staticLogFileName value="false" />  --false 日誌文件動態命名
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="DEBUG" />
      <param name="LevelMax" value="DEBUG" />
    </filter>
  </appender>

  <appender name="InfoRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO">
    <file value="App_Data/Logs/Info/" />
    <appendToFile value="true" />
    <DatePattern value="yyyy-MM-dd_HH&quot;.txt&quot;"/>
    <RollingStyle value="Date"/>
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="INFO" />
      <param name="LevelMax" value="INFO" />
    </filter>
  </appender>

  <appender name="WarnRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="WARN">
    <file value="App_Data/Logs/Warn/" />
    <appendToFile value="true" />
    <DatePattern value="yyyy-MM-dd&quot;.txt&quot;"/>
    <RollingStyle value="Date"/>
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="WARN" />
      <param name="LevelMax" value="WARN" />
    </filter>
  </appender>

  <appender name="ErrorRollingFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR">
    <file value="App_Data/Logs/Error/" />
    <appendToFile value="true" />
    <DatePattern value="yyyy-MM-dd&quot;.txt&quot;"/>
    <RollingStyle value="Date"/>
    <staticLogFileName value="false" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5level %date [%-5.5thread] %-40.40logger - %message%newline" />
    </layout>
    <filter type="log4net.Filter.LevelRangeFilter">
      <param name="LevelMin" value="ERROR" />
      <param name="LevelMax" value="ERROR" />
    </filter>
  </appender>

  <root>
    <level value="All" />
    <appender-ref ref="DebugRollingFileAppender" />
    <appender-ref ref="InfoRollingFileAppender" />
    <appender-ref ref="WarnRollingFileAppender" />
    <appender-ref ref="ErrorRollingFileAppender" />
  </root>
  </log4net>

三、手動記錄日誌

當程序運行時,ABP內部已經記錄了日誌,如果我們需要更加詳細的手動記錄日誌也是可以的。 在Application應用服務中記錄日誌

public class MenuAppService : PDAppServiceBase,IMenuAppService
{
    public ILogger Logger { get; set; }

    public MenuAppService()
    {
        Logger = NullLogger.Instance;
    }

    public void Get()
    {
        Logger.Info("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
    }
}

說明:Log4Net的abp官方說明https://aspnetboilerplate.com/Pages/Documents/Logging#config

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