.Net 6 使用Log4Net
1.首先引入Log4Net的 Nuget包 第一个就是
2.复制所需配置文件(文件中包含写入文本日志和数据库日志, 自行根据注释选择所需) 取名 log4net.Config
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | <?xml version= "1.0" encoding= "utf-8" ?> <log4net> <!-- Define some output appenders --> <appender name= "rollingAppender" type= "log4net.Appender.RollingFileAppender" > <file value= "log4\log.txt" /> <!--追加日志内容--> <appendToFile value= "true" /> <!--防止多线程时不能写Log,官方说线程非安全--> <lockingModel type= "log4net.Appender.FileAppender+MinimalLock" /> <!--可以为:Once|Size|Date|Composite--> <!--Composite为Size和Date的组合--> <rollingStyle value= "Composite" /> <!--当备份文件时,为文件名加的后缀--> <datePattern value= "yyyyMMdd.TXT" /> <!--日志最大个数,都是最新的--> <!--rollingStyle节点为Size时,只能有value个日志--> <!--rollingStyle节点为Composite时,每天有value个日志--> <maxSizeRollBackups value= "20" /> <!--可用的单位:KB|MB|GB--> <maximumFileSize value= "3MB" /> <!--置为 true ,当前最新日志文件名永远为file节中的名字--> <staticLogFileName value= "true" /> <!--输出级别在INFO和ERROR之间的日志--> <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 - %message%newline" /> </layout> </appender> <!--SqlServer形式--> <!--下载NuGet包: System. Data.SqlClient--> <!--log4net日志配置:http: //logging.apache.org/log4net/release/config-examples.html --> <appender name= "AdoNetAppender_SqlServer" type= "log4net.Appender.AdoNetAppender" > <!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库--> <bufferSize value= "0" /> <connectionType value= "System.Data.SqlClient.SqlConnection,System.Data.SqlClient, Version=4.6.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <connectionString value= "Data Source=DESKTOP-T2D6ILD;Initial Catalog=LogManager;Persist Security Info=True;User ID=sa;Password=sa123" /> <commandText value= "INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" /> <parameter> <parameterName value= "@log_date" /> <dbType value= "DateTime" /> <layout type= "log4net.Layout.RawTimeStampLayout" /> </parameter> <parameter> <parameterName value= "@thread" /> <dbType value= "String" /> <size value= "255" /> <layout type= "log4net.Layout.PatternLayout" > <conversionPattern value= "%thread" /> </layout> </parameter> <parameter> <parameterName value= "@log_level" /> <dbType value= "String" /> <size value= "50" /> <layout type= "log4net.Layout.PatternLayout" > <conversionPattern value= "%level" /> </layout> </parameter> <parameter> <parameterName value= "@logger" /> <dbType value= "String" /> <size value= "255" /> <layout type= "log4net.Layout.PatternLayout" > <conversionPattern value= "%logger" /> </layout> </parameter> <parameter> <parameterName value= "@message" /> <dbType value= "String" /> <size value= "4000" /> <layout type= "log4net.Layout.PatternLayout" > <conversionPattern value= "%message" /> </layout> </parameter> <parameter> <parameterName value= "@exception" /> <dbType value= "String" /> <size value= "2000" /> <layout type= "log4net.Layout.ExceptionLayout" /> </parameter> </appender> <root> <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF--> <!--OFF:0--> <!--FATAL:FATAL--> <!--ERROR: ERROR,FATAL--> <!--WARN: WARN,ERROR,FATAL--> <!--INFO: INFO,WARN,ERROR,FATAL--> <!--DEBUG: INFO,WARN,ERROR,FATAL--> <!--ALL: DEBUG,INFO,WARN,ERROR,FATAL--> <priority value= "ALL" /> <level value= "INFO" /> <appender- ref ref = "rollingAppender" /> <appender- ref ref = "AdoNetAppender_SqlServer" /> </root> </log4net> |
3.program.cs 中引入配置
builder.Logging.AddLog4Net("CfgFile/log4net.Config"); //括号内容为上面配置文件所在地址,我这里是放在根目录下的CfgFile文件下。
4.到这里基础配置已完成,接下来就是使用啦!
新建一个MVC的Controller ,我这里随意取名为 SecendController ,依赖注入的方式打印日志
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | using Microsoft.AspNetCore.Mvc; namespace Advanced.NET6.Project.Controllers { public class SecendController : Controller { public ILogger<SecendController> _Logger; public SecendController(ILogger<SecendController> logger) { _Logger = logger; _Logger.LogInformation($ "{this.GetType().Name}被构造了" ); } public IActionResult Index() { _Logger.LogInformation($ "{this.GetType().Name}被执行了" ); return View(); } } } |
5.最终日志文件会写入到相应的bin文件里面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了