前言:Log4Net同样是Apache下的日志框架,在.net整个系列上基本上都可以使用。API也和其他的日志框架(log4j)相似,所以学习上手非常快。
1.直接安装NuGet依赖包
2.在StartUp中进行配置
配置方法也很简单,
public void ConfigureServices(IServiceCollection services)
{
//使用AddLog4Net方法加载你的配置文件即可
services.AddLogging(cfg => { cfg.AddLog4Net("log4net.config"); });
services.AddControllers();
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "Log4NetSample", Version = "v1" });
});
}
完成log4net的xml配置文件,命名为log4net.config(注:不要保存为xml,vs中默认以.config代替.xml)
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<!--定义一个appender用于将日志记录到文件-->
<appender name="All" type="log4net.Appender.RollingFileAppender">
<file value="\XXXX\Log4NetSample\Sample.log" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="_yyyy-MM-dd.log" />
<maximumFileSize value="5MB" />
<maxSizeRollBackups value="15" />
<staticLogFileName value="false" />
<PreserveLogFileNameExtension value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<!--引用上面定义的appender -->
<root>
<appender-ref ref="All" />
</root>
</log4net>
3.直接在程序中使用
使用方式大体可以分为,构造函数注入日志器,和静态工厂获取。
后者就和Java中著名的slf4j日志门面提供的API差不多,从工厂中获取logger
//工厂获取Java日志
final static Logger logger = LoggerFactory.getLogger(MyLogTest.class);
//工厂获取C#日志
readonly static ILog logger = LogManager.getLogger(typeof(MyClass));
构造函数注入(ASP.NET OCRE原生日志的使用方式):
需要注意的是,这里不需要在配置Controller的IOC时手动操作这些logger参数,
ASP.NET CORE会在创建Controller时自动注入这些ILogger参数,和上面的方法一样,也可以算开箱即用。
public class TestController{
private ILogger<TestController> logger;
public TestController(ILogger<TestController> logger){
this.logger = logger;
}
[HttpGet]
public string LoggingTag(string str)
{
logger.LogInformation("you are logging {0}", str);
return "wtf";
}
调用这个接口,查看相应的日志记录