NET Core下使用Log4Net记录日志的方法步骤
这篇文章主要介绍了.NET Core下使用Log4Net记录日志的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Log4Net
相信大家都很熟悉了,算是比较主流和著名的日志组件了。
开源地址: https://github.com/apache/logging-log4net
最佳实践
在项目中添加组件包
1 | Install-Package log4net |
添加 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 | <? xml version = "1.0" encoding = "utf-8" ?> < configuration > < configSections > < section name = "log4net" type = "log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </ configSections > < log4net debug = "false" > < appender name = "info" type = "log4net.Appender.RollingFileAppender,log4net" > < param name = "File" value = "log4net/info/" /> < param name = "AppendToFile" value = "true" /> < param name = "MaxSizeRollBackups" value = "-1" /> < param name = "MaximumFileSize" value = "5MB" /> < param name = "RollingStyle" value = "Composite" /> < param name = "DatePattern" value = "yyyyMMdd\\HH".log"" /> < param name = "StaticLogFileName" value = "false" /> < layout type = "log4net.Layout.PatternLayout,log4net" > < param name = "ConversionPattern" value="%n { "system": "Meowv.Blog", "datetime": "%d", "description": "%m", "level": "%p", "info": "%exception" }" /> </ layout > < filter type = "log4net.Filter.LevelRangeFilter" > < levelMin value = "INFO" /> < levelMax value = "INFO" /> </ filter > </ appender > < appender name = "error" type = "log4net.Appender.RollingFileAppender,log4net" > < param name = "File" value = "log4net/error/" /> < param name = "AppendToFile" value = "true" /> < param name = "MaxSizeRollBackups" value = "-1" /> < param name = "MaximumFileSize" value = "5MB" /> < param name = "RollingStyle" value = "Composite" /> < param name = "DatePattern" value = "yyyyMMdd\\HH".log"" /> < param name = "StaticLogFileName" value = "false" /> < layout type = "log4net.Layout.PatternLayout,log4net" > < param name = "ConversionPattern" value="%n { "system": "Meowv.Blog", "datetime": "%d", "description": "%m", "level": "%p", "info": "%exception" }" /> </ layout > < filter type = "log4net.Filter.LevelRangeFilter" > < levelMin value = "ERROR" /> < levelMax value = "ERROR" /> </ filter > </ appender > < root > < level value = "ALL" ></ level > < appender-ref ref = "info" /> < appender-ref ref = "error" /> </ root > </ log4net > </ configuration > |
控制台项目
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 | using log4net; using log4net.Config; using System; using System.IO; using System.Reflection; namespace ConsoleAppDemo { class Program { static void Main( string [] args) { var log4netRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); XmlConfigurator.Configure(log4netRepository, new FileInfo( "log4net.config" )); ILog log = LogManager.GetLogger(log4netRepository.Name, "NETCorelog4net" ); log.Info( "NETCorelog4net log" ); log.Info( "test log" ); log.Error( "error" ); log.Info( "linezero" ); Console.ReadKey(); } } } |
AspNetCore项目
新建一个静态类,写一个扩展方法 UseLog4Net()
,用于 log4net
初始化。
1 2 3 4 5 6 7 8 9 10 | public static class Log4NetExtensions { public static IHostBuilder UseLog4Net( this IHostBuilder hostBuilder) { var log4netRepository = LogManager.GetRepository(Assembly.GetEntryAssembly()); XmlConfigurator.Configure(log4netRepository, new FileInfo( "log4net.config" )); return hostBuilder; } } |
扩展方法返回 IHostBuilder
对象,这样可以链式调用,美化代码,然后在 Program.cs
中使用扩展方法 UseLog4Net()
。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; namespace WebAppDemo { public class Program { public static void Main( string [] args) { CreateHostBuilder(args).Build().Run(); } public static IHostBuilder CreateHostBuilder( string [] args) => Host.CreateDefaultBuilder(args) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }).UseLog4Net(); } } |
配置完成,然后在任意地方写入日志即可。
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 | using log4net; using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; namespace WebAppDemo.Controllers { [ApiController] [Route( "[controller]" )] public class WeatherForecastController : ControllerBase { private static readonly string [] Summaries = new [] { "Freezing" , "Bracing" , "Chilly" , "Cool" , "Mild" , "Warm" , "Balmy" , "Hot" , "Sweltering" , "Scorching" }; private readonly ILog _log; public WeatherForecastController() { _log = LogManager.GetLogger( typeof (WeatherForecastController)); } [HttpGet] public IEnumerable<WeatherForecast> Get() { _log.Info( "Hello, this is a Weather api!" ); _log.Warn( "Wran !!!" ); _log.Error( "Controller Error" ); var rng = new Random(); return Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = rng.Next(-20, 55), Summary = Summaries[rng.Next(Summaries.Length)] }) .ToArray(); } } } |
到此这篇关于.NET Core下使用Log4Net记录日志的方法步骤的文章就介绍到这了