zoukankan      html  css  js  c++  java
  • NetCore使用log4

    NetCore使用log4的两种方式

    一.需要指定 日志仓库
    nuget:log4net,Microsoft.Extensions.Logging.Log4Net.AspNetCore
     

     1.在程序启动的时候,先创建日志仓库,日志仓库自定义,整个系统,都是唯一的一个仓库最好管理

     1 public Startup(IConfiguration configuration, IHostingEnvironment environment)
     2  {
     3    /*var builder = new ConfigurationBuilder().SetBasePath(environment.ContentRootPath).AddJsonFile("appsettings.json");//加载json配置文
     4    Configuration = configuration;*/
     5  6   //string root = environment.WebRootPath;//这个指向项目 的root目录
     7    string contentRootPath = environment.ContentRootPath;//指向项目的目录
     8    System.IO.FileInfo fileInfo = new System.IO.FileInfo(contentRootPath + "\Config\Log4net.config");//加载log4net的配置文件
     9    log4net.Repository.ILoggerRepository logger = log4net.LogManager.CreateRepository("NETCoreRepository");//创建日志仓库,名字自定义
    10   log4net.Config.XmlConfigurator.Configure(logger, fileInfo);//配置
    11   //log4net.Config.XmlConfigurator.ConfigureAndWatch(logger,fileInfo);//配置和匹配
    12 }

    2.使用

    log4net.ILog log = log4net.LogManager.GetLogger("NETCoreRepository",GetType());
    log.Info("普通日志");
    log.Error("错误信息");

    二.日志仓库,组件默认 无需指定 日志仓库

     1   public class Program
     2     {
     3         public static void Main(string[] args)
     4         {
     5             BuildWebHost(args).Run();
     6         }
     7  8  9 10         public static IWebHost BuildWebHost(string[] args) =>
    11             WebHost.CreateDefaultBuilder(args)
    12             .UseUrls("http://*:5001")
    13             .UseIISIntegration()
    14              .ConfigureLogging(loggingBuilder =>
    15              {
    16                  loggingBuilder.AddFilter("System", LogLevel.Warning);
    17                  loggingBuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
    18                  loggingBuilder.AddLog4Net(@"Configlog4net.config");
    19              })
    20             .UseStartup<Startup>()
    21             .Build();
    22     }

     2.使用

    1   log4net.ILog log = log4net.LogManager.GetLogger(GetType());//这一种无需指定 日志仓库
    2   log.Info("普通日志");
    3   log.Error("错误信息");
    或者这样
    ILoggerFactory _Factory = //容器注入个对象给他
    _Factory.CreateLogger<T>().LogError("这里是ILoggerFactory Error");// T为class当前类型
    _Factory.LogWarning($"普通日志");

     在控制器中使用,注入ILoggerFactory(命名空间:)是可行的,log4net.ILog log 不可以的

     1 using ILoggerFactory = Microsoft.Extensions.Logging.ILoggerFactory;//必须是这个命名控件,才能注入成功
     2 // using ILoggerFactory = log4net.Repository.Hierarchy.ILoggerFactory; // 这个是错误的,注入失败
     3  4 public class DefaultController : Controller
     5 {
     6     private ILoggerFactory _Factory = null;
     7     private ILogger<DefaultController> _logger = null;
     8     //log4net.ILog log,不支持注入的,
     9     public DefaultController(ILoggerFactory factory,ILogger<DefaultController> logger )
    10     {
    11         this._Factory = factory;
    12         this._logger = logger;
    13     }
    14 }
  • 相关阅读:
    动态页面技术----EL技术、JSTL技术,javaEE的开发模式
    动态页面技术----JSP技术
    会话技术Cookie&Session
    HttpServletRequest
    设计模式和抽象类、方法
    类的继承
    类与对象
    面向对象和面向过程的区别
    PHP-错误处理
    PHP-文件加载
  • 原文地址:https://www.cnblogs.com/Qintai/p/11829513.html
Copyright © 2011-2022 走看看