配置与扩展
1、配置文件
通过配置文件可以配置多个日志管理器,通过更换 default 的值即可实现无缝切换。配置文件如下:
- .Net Framework 下的 app.config 或 web.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="fireasy">
<section name="loggings" type="Fireasy.Common.Logging.Configuration.LoggingConfigurationSectionHandler, Fireasy.Common"/>
</sectionGroup>
</configSections>
<fireasy>
<loggings default="nlog" level="Debug;Info;Error">
<logging name="nlog" type="Fireasy.NLog.Logger, Fireasy.NLog" />
<logging name="log4net" type="Fireasy.LognNet.Logger, Fireasy.Log4net" />
<logging name="demo" type="demo.Logger, demo" />
</loggings>
</fireasy>
</configuration>
- .Net Core 下的 appsettings.json 文件
{
"fireasy": {
"loggings": {
"default": "nlog",
"level": "Debug;Info;Error",
"settings": {
"nlog": {
"type": "Fireasy.NLog.Logger, Fireasy.NLog"
},
"log4net": {
"type": "Fireasy.LognNet.Logger, Fireasy.Log4net"
},
"demo": {
"type": "demo.Logger, demo"
}
}
}
}
}
LoggerFactory
工厂类可以根据配置创建一个 ILogger
实例。如下所示:
[TestMethod]
public void TestCreateLogger()
{
var logger1 = LoggerFactory.CreateLogger();
Assert.IsNotNull(logger1); // NLogger
var logger2 = LoggerFactory.CreateLogger("demo");
Assert.IsNotNull(logger2); // demo
}
在使用 IOC
的环境中,通过构造注入或属性注入得到的 ILogger
的实例对应的是指向 default 的配置项。
level 属性配置了启用的日志级别,可以配置多个,支持分号、逗号或竖线分隔。LogEnvironment
类的静态属性 Level 返回了此配置。IsConfigured 方法判断是否配置了某一个级别。基于以上配置,判断是否开启了 Error 级别的日志,如下所示:
[TestMethod]
public void TestIsConfigured()
{
Assert.IsTrue(LogEnvironment.IsConfigured(LogLevel.Error));
Assert.IsFalse(LogEnvironment.IsConfigured(LogLevel.Fatal));
}
2、对接 .Net Standard 的日志
.Net Standard 中提供了 ILogger
接口,用于输出各种级别的日志。使用 StandardNaviteLogger
类可以使用 .Net Standard 的 Logger
接管 Fireasy 的日志。以下是各级别的对应方法:
Fireasy 日志方法 | .Net Standard 日志方法 |
---|---|
Info | LogInformation |
Debug | LogDebug |
Error | LogError |
Warn | LogWarning |
Fatal | LogCritical |
.Net Core 的配置文件如下:
{
"fireasy": {
"loggings": {
"settings": {
"netstandard": {
"type": "Fireasy.Common.Logging.StandardNaviteLogger, Fireasy.Common"
}
}
}
}
}
3、复合日志
ComplexLogger
类型的日志管理器可以配置多个分发记录器,将日志同时写到不同的记录器。配置如下所示:
- .Net Framework 下的 app.config 或 web.config 文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="fireasy">
<section name="loggings" type="Fireasy.Common.Logging.Configuration.LoggingConfigurationSectionHandler, Fireasy.Common"/>
</sectionGroup>
</configSections>
<fireasy>
<loggings>
<logging name="complex" type="Fireasy.Common.Logging.ComplexLogger, Fireasy.Common">
<loggers>
<logger type="demo.Logger, demo" level="Info,Error" />
<logger type="Fireasy.NLog.Logger, Fireasy.NLog" />
</loggers>
</logging>
</loggings>
</fireasy>
</configuration>
- .Net Core 下的 appsettings.json 文件
{
"fireasy": {
"loggings": {
"settings": {
"complex": {
"type": "Fireasy.Common.Logging.ComplexLogger, Fireasy.Common",
"loggers": [
{
"level": "Info,Error",
"type": "demo.Logger, demo"
},
{
"type": "Fireasy.NLog.Logger, Fireasy.NLog"
}
]
}
}
}
}
}