NetCore 使用Log4Net(两种方式)

2021-02-02 14:17

阅读:491

标签:manager   构造   Once   pen   方法   create   表示   mfile   反向代理   

首先去Nuget中安装Log4Net包

安装:log4net

安装:Microsoft.Extensions.Logging.Console

安装:Microsoft.Extensions.Logging.Log4Net.AspNetCore

方式一

Program.cs文件

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Logging;
 
namespace NetCoreApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateWebHostBuilder(args).Build().Run();//CreateWebHostBuilder启动了Kestrel服务器,这个服务器负责监听--转发--响应客户端请求(这样就不需要IIS来负责监听,转发,响应客户端请求了,IIS就只做反向代理就行了)
        }
 
        public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.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();
            })
            .UseStartup();
    }
}

控制器中使用

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
 
namespace NetCoreApp.Controllers
{
    public class HomeController : Controller
    {
        //ILoggerFactory和ILogger都是系统内置的接口,它们两个都可以写日志,随便你用哪个都行
        public ILoggerFactory _Factory = null;  
        public ILogger _logger = null;
 
        //注意:ILoggerFactory的命名空间是Microsoft.Extensions.Logging;
        public HomeController(ILoggerFactory factory, ILogger logger)
        {
            this._Factory = factory;
            this._logger = logger;
        }
        public IActionResult Index()
        {
            var msg = _user.Sum();
            this._Factory.CreateLogger().LogError("这里出现了一个错误");
            this._logger.LogError("出现了严重的错误!");
           
            return Content("OK");
        }       
    }
}

log4net.config 配置文件    注意:这个配置文件的最外层用 包裹的 ;配置文件直接放在了项目根目录下

"1.0" encoding="utf-8"?>
"RollingAppender" type="log4net.Appender.RollingFileAppender">
    
    "log\log.txt"/>
    
    "true"/>
    
    
    "Composite"/>
    
    "false"/>
    
    "yyyyMMdd.TXT"/>
    
    
    
    "20"/>
    
    "5MB"/>
    "log4net.Filter.LevelRangeFilter">
      "LevelMin" value="ALL"/>
      "LevelMax" value="FATAL"/>
    "log4net.Layout.PatternLayout">
      "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
    "ALL"/>
    "ALL"/>
    ref ref="RollingAppender"/>
  

方式二

Startup文件

public class Startup
{
    //为StartUp.cs添加属性
    public static ILoggerRepository repository { get; set; }
    public IConfiguration Configuration { get; } //构造函数注入:Configuration用于读取配置文件的
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
 
        repository = LogManager.CreateRepository("NetCoreApp"); //我的项目名称叫NetCoreApp
        //指定配置文件
        XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
    }
}

控制器中使用

using log4net;
using Microsoft.AspNetCore.Mvc;
 
namespace NetCoreApp.Controllers
{
    public class HomeController : Controller
    {
        private ILog log;
 
        public HomeController()
        {
            this.log = LogManager.GetLogger(Startup.repository.Name, typeof(HomeController));
        }
        public IActionResult Index()
        {
            log.Error("哈哈,出现错误啦");
            
            return Content("OK");
        }       
    }
}

log4net.config配置文件:注意,这个配置文件的最外层用包裹的;配置文件直接放在了项目根目录下

"1.0" encoding="utf-8"?>
"RollingAppender" type="log4net.Appender.RollingFileAppender">
      
      "log\log.txt"/>
      
      "true"/>
      
      
      "Composite"/>
      
      "false"/>
      
      "yyyyMMdd.TXT"/>
      
      
      
      "20"/>
      
      "5MB"/>
      "log4net.Filter.LevelRangeFilter">
        "LevelMin" value="ALL"/>
        "LevelMax" value="FATAL"/>
      "log4net.Layout.PatternLayout">
        "%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/>
      "ALL"/>
      "ALL"/>
      ref ref="RollingAppender"/>
    

 

NetCore 使用Log4Net(两种方式)

标签:manager   构造   Once   pen   方法   create   表示   mfile   反向代理   

原文地址:https://www.cnblogs.com/kevin860/p/13170107.html


评论


亲,登录后才可以留言!