.net core通过依赖注入使用log4net记录日志
进入现在的公司,每天都很忙碌,虽然说这样会让你感觉到充实,但是充实过后难免有些空虚,因为周而复始的业务逻辑不但没有让自己能力提高,而且还陷入每天修改别人bug的死循环中。今天刚好周末有点时间就研究了一下.net core中如何使用log4net记录日志,当然咱们也可以像以前.net framework那样创建一个LogHelper,但是咱们既然使用到了依赖注入,还是通过依赖注入的方式来实现吧。
第一步、通过nuget引入类库
<ItemGroup> <PackageReference Include="log4net" Version="2.0.12" /> <PackageReference Include="Microsoft.Extensions.Logging.Log4Net.AspNetCore" Version="3.1.5" /> </ItemGroup>
第二步、修改.net core的默认日志记录方式
修改Program.cs
第三步、编码记录日志
第四步、log4net.config文件

<?xml version="1.0" encoding="utf-8"?> <log4net> <appender name="Log4Name" type="log4net.Appender.RollingFileAppender"> <!--日志路径--> <param name="File" value="log\log.log" /> <!--是否是向文件中追加日志--> <param name="AppendToFile" value="true" /> <!--log保留个数--> <param name="MaxSizeRollBackups" value="200" /> <!--单个日志文件大小--> <param name="MaximumFileSize" value="5MB" /> <!--日志文件名是否是固定不变的--> <param name="StaticLogFileName" value="false" /> <!--日志文件名格式为:2008-08-31.log--> <DatePattern value="yyyy-MM-dd HH'时.log'"></DatePattern> <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--> <param name="RollingStyle" value="Size" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %5level %logger.%method [%line] - MESSAGE: %message%newline %exception" /> </layout> </appender> <root> <!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) --> <level value="ALL" /> <appender-ref ref="Log4Name" /> </root> </log4net>
第五步、调整日志级别
首先咱们必须要清楚,日志的记录首先是通过.net core的日志记录器输出日志,然后再通过log4net进行文本输出,因此这里有两个地方需要控制日志级别,log4net的日志基本不用赘述,如下:
(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低)
而.net core的日志级别则需要调整appsettings.json(或appsettings.Development.json)文件中的配置:
至此,就可以正常输出日志了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗