实例介绍
在ASP.NET Core应用程序中,Log4net可以作为Microsoft Extensions Logging的处理程序来配置,以实现高效的日志管理。感谢@anuraj提出的原始博客文章。
使用示例
首先,将包安装或引用到您的ASP.NET Core应用程序中。
在Startup类的Configure方法中添加AddLog4Net()调用。
using Microsoft.Extensions.Logging;
public class Startup
{
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddLog4Net(); // 添加这一行
app.UseMvc();
}
}
对于dotnet 6.0及更高版本,在Program.cs文件中添加builder.Logging.AddLog4Net();调用。
添加一个log4net.config文件,并填写内容。
您可以在配置文档上找到更多配置示例。
使用BeginScope
从2.2.7版本开始,此nuget允许使用Log4NetLogger的BeginScope方法。
var dictionary = new Dictionary<string, string="">() { { “test”, “SCOPED_VALUE” } };
using (var scope = logger.BeginScope(dictionary))
{
logger.LogCritical(message);
}
BeginScope方法允许任何对象,但仅有某些类型会以特殊方式处理。
当您使用任何允许的IEnumerable<keyvaluepair<,>>类型时,该集合将被处理,并且此集合中的每个项应该使用Key作为属性名称,Value作为值来替换定义的Pattern Layout中的占位符。
此外,如果参数不是给定的IEnumerable<keyvaluepair<,>>之一,该值将在默认scope属性上记录。
当您使用两个连续的BeginScope调用时…
using (var scope = logger.BeginScope(“SCOPED_VALUE”))
{
using (var scope = logger.BeginScope(Guid.NewGuid()))
{
logger.LogCritical(message); // SCOPED_VALUE和Guid值(两者)将替换%property{scope}占位符
}
}
有关LogicalThreadContext工作方式的更多信息,请访问官方文档。
.NET Core 2.0 - 记录调试级别消息
要能够在任何配置的log4net appender中注册Debug级别消息,您应该在构建IWebHost实例时更改ASP.NET Core 2配置。
记录低于信息级别的消息
请注意,当尝试允许开发构建的消息级别低于信息级别时,您必须在appsettings.Development.json中进行相应设置。
【实例截图】
【核心代码】
文件清单
└── Microsoft.Extensions.Logging.Log4Net.AspNetCore-c3b35ae1a6f70856fbd722e594ac02676c819b03
├── coverage.cmd
├── deploy
│ ├── main.yml
│ └── sdk.yaml
├── doc
│ ├── CONFIG.md
│ └── ModifyingLoggingBehaviour.md
├── LICENSE
├── README.md
├── samples
│ ├── Net5.0
│ │ └── WebApi
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── WeatherForecastController.cs
│ │ ├── log4net.config
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Sample.WebApi.Net50.csproj
│ │ ├── Startup.cs
│ │ └── WeatherForecast.cs
│ ├── Net6.0
│ │ └── WebApi
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── WeatherForecastController.cs
│ │ ├── log4net.config
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Sample.WebApi.Net60.csproj
│ │ └── WeatherForecast.cs
│ ├── NetCoreApp2.0
│ │ └── WebApi
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── WeatherForecastController.cs
│ │ ├── log4net.config
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Sample.WebApi.NetCore20.csproj
│ │ ├── Startup.cs
│ │ └── WeatherForecast.cs
│ ├── NetCoreApp2.2
│ │ └── WebApi
│ │ ├── appsettings.Development.json
│ │ ├── appsettings.json
│ │ ├── Controllers
│ │ │ └── WeatherForecastController.cs
│ │ ├── log4net.config
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Sample.WebApi.NetCore22.csproj
│ │ ├── Startup.cs
│ │ └── WeatherForecast.cs
│ └── NetCoreApp3.1
│ └── WebApi
│ ├── appsettings.Development.json
│ ├── appsettings.json
│ ├── Controllers
│ │ └── WeatherForecastController.cs
│ ├── log4net.config
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── Sample.WebApi.NetCore31.csproj
│ ├── Startup.cs
│ └── WeatherForecast.cs
├── src
│ ├── Microsoft.Extensions.Logging.Log4Net.AspNetCore
│ │ ├── Entities
│ │ │ ├── MessageCandidate.cs
│ │ │ └── NodeInfo.cs
│ │ ├── Extensions
│ │ │ ├── DocumentExtensions.cs
│ │ │ ├── Log4NetProviderExtensions.cs
│ │ │ └── LogExtensions.cs
│ │ ├── ILog4NetLoggingEventFactory.cs
│ │ ├── ILog4NetLogLevelTranslator.cs
│ │ ├── Log4NetExtensions.cs
│ │ ├── Log4NetLogger.cs
│ │ ├── Log4NetLoggingEventFactory.cs
│ │ ├── Log4NetLogLevelTranslator.cs
│ │ ├── Log4NetProvider.cs
│ │ ├── Log4NetProviderOptions.cs
│ │ ├── Microsoft.Extensions.Logging.Log4Net.AspNetCore.csproj
│ │ └── Scope
│ │ ├── NullScope.cs
│ │ └── NullScopeProvider.cs
│ └── Microsoft.Extensions.Logging.Log4net.sln
└── tests
└── Unit.Tests
├── Fixtures
│ ├── AppenderFixture.cs
│ ├── IsEnabledClassData.cs
│ └── TestLogMethodData.cs
├── log4net.config
├── Log4NetExtensionsTests.cs
├── Log4NetLoggerTests.cs
├── Log4NetProviderOptionsTests.cs
├── Log4NetProviderTests.cs
├── Mocks
│ └── LoggingEventFactoryMock.cs
├── Models
│ └── Log4NetFileOption.cs
├── Resources
│ ├── log4net.All.config
│ ├── log4net.DebugOrHigher.config
│ ├── log4net.FatalOrHigher.config
│ ├── log4net.NoAppenders.config
│ ├── log4net.TestAppenderTrace.config
│ ├── log4net.TestAppenderWarn.config
│ └── log4net.TraceOrHigher.config
└── Unit.Tests.csproj
35 directories, 86 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论