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".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