• NetCore 使用Log4Net(两种方式)


    首先去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<Startup>();
        }
    }

    控制器中使用

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

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

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
      <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
        <!--指定日志文件保存的目录-->
        <file value="loglog.txt"/>
        <!--追加日志内容-->
        <appendToFile value="true"/>
        <!--可以为:Once|Size|Date|Composite-->
        <!--Compoosite为Size和Date的组合-->
        <rollingStyle value="Composite"/>
        <!--设置为true,当前最新日志文件名永远为file字节中的名字-->
        <staticLogFileName value="false"/>
        <!--当备份文件时,备份文件的名称及后缀名-->
        <datePattern value="yyyyMMdd.TXT"/>
        <!--日志最大个数-->
        <!--rollingStyle节点为Size时,只能有value个日志-->
        <!--rollingStyle节点为Composie时,每天有value个日志-->
        <maxSizeRollBackups value="20"/>
        <!--可用的单位:KB|MB|GB-->
        <maximumFileSize value="5MB"/>
        <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 [%property{NDC}] - %message%newline"/>
        </layout>
      </appender>
      <root>
        <priority value="ALL"/>
        <level value="ALL"/>
        <appender-ref ref="RollingAppender"/>
      </root>
    </log4net>

    方式二

    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配置文件:注意,这个配置文件的最外层用<configuration>包裹的;配置文件直接放在了项目根目录下

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <log4net>
        <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
          <!--指定日志文件保存的目录-->
          <file value="loglog.txt"/>
          <!--追加日志内容-->
          <appendToFile value="true"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Compoosite为Size和Date的组合-->
          <rollingStyle value="Composite"/>
          <!--设置为true,当前最新日志文件名永远为file字节中的名字-->
          <staticLogFileName value="false"/>
          <!--当备份文件时,备份文件的名称及后缀名-->
          <datePattern value="yyyyMMdd.TXT"/>
          <!--日志最大个数-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composie时,每天有value个日志-->
          <maxSizeRollBackups value="20"/>
          <!--可用的单位:KB|MB|GB-->
          <maximumFileSize value="5MB"/>
          <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 [%property{NDC}] - %message%newline"/>
          </layout>
        </appender>
        <root>
          <priority value="ALL"/>
          <level value="ALL"/>
          <appender-ref ref="RollingAppender"/>
        </root>
      </log4net>
    </configuration>
     
  • 相关阅读:
    【19】什么时候该改变开发集和评估指标
    【18】训练/开发/测试集划分
    【17】满足和优化指标
    【16】机器学习中的单一评估指标
    【15】ML项目流程与正交化
    【14】Softmax回归
    【13】正则化网络激活函数(Batch归一化)
    【12】超参数及超参数的选择
    【11】神经网络的优化算法
    06-----Nodejs介绍
  • 原文地址:https://www.cnblogs.com/kevin860/p/13170107.html
Copyright © 2020-2023  润新知