开发随笔记录——关于ASP.NET Core使用log4Net进行记录日志操作。
声明:本文章采用ASP.NET Core 3.1版本仅为了经验分享以及经验记录,如若涉及到利益请联系博主进行删帖,谢谢。
首先我们知道.NET Core框架只是一个空壳子里面需要的任何东西都要自己去手动添加,所以这里使用NuGet下载以下三个管理包:
1、log4net
2、Microsoft.Extensions.Logging.Console
3、Microsoft.Extensions.Logging.Log4Net.AspNetCore
接下来我们在本项目中 右键==》添加==》新建项==》ASP.NET Core==》web 配置文件 我们命名为log4net.config,里面内容填入如下代码:
<?xml version="1.0" encoding="utf-8"?> <log4net> <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender"> <!--指定日志文件保存的目录--> <file value="log\log.txt"/> <!--追加日志内容--> <appendToFile value="true"/> <!--可以为:Once|Size|Date|Composite--> <!--Compoosite为Size和Date的组合--> <rollingStyle value="Composite"/> <!--设置为true,当前最新日志文件名永远为file字节中的名字--> <staticLogFileName value="false"/> <!--当备份文件时,备份文件的名称及后缀名--> <datePattern value="yyyyMMdd.txt"/> <!--日志最大个数--> <!--rollingStyle节点为Size时,只能有value个日志--> <!--rollingStyle节点为Composie时,每天有value个日志--> <maxSizeRollBackups value="20"/> <!--可用的单位:KB|MB|GB--> <maximumFileSize value="5MB"/> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ALL"/> <param name="LevelMax" value="FATAL"/> </filter> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> </layout> </appender> <root> <priority value="ALL"/> <level value="ALL"/> <appender-ref ref="RollingAppender"/> </root> </log4net>
之后,我们在Program.cs文件下,修改CreateHostBuilder代码,如下:
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureLogging((context, loggingbuilder)=> { //该方法需要引入Microsoft.Extensions.Logging名称空间 loggingbuilder.AddFilter("System", LogLevel.Warning); //过滤掉系统默认的一些日志 loggingbuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志 //添加Log4Net //var path = Directory.GetCurrentDirectory() + "\\log4net.config"; //不带参数:表示log4net.config的配置文件就在应用程序根目录下,也可以指定配置文件的路径 loggingbuilder.AddLog4Net(); }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); });
之后,在控制器中注入日志服务,如下:
private readonly ILogger<TestController> _logger; public TestController(ILogger<TestController> logger) { _logger = logger; }
之后就可以在action中使用日志,添加日志信息了,如下:
_logger.LogInformation(""); _logger.LogError(""); _logger.LogWarning("");
之后就可以在该项目根目录中找到生成的日志文件了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术