一、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".txt""/> --日誌文件命名格式
<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".txt""/>
<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".txt""/>
<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".txt""/>
<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