• NETCORE


    NETCORE - 日志插件 Log4Net

    安装nuget包:

    Microsoft.Extensions.Logging.Log4Net.AspNetCore

    方式一

    1.  Program.cs文件

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

    2.  log4net.config文件 

    文件位置可在program.cs的CreateWebHostBuilder方法中指定,样例为项目跟目录。

    <?xml version="1.0" encoding="utf-8"?>
    <log4net>
      <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
        <!--指定日志文件保存的目录,目录可不在项目中-->
        <!--<file value="d:\AAloglog.txt"/>-->
        <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>
    View Code

    3. webapi调用

    创建TestController控制器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using log4net.Core;
    //using log4net.Repository.Hierarchy;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    
    namespace NETCORE.Log4Net1.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class TestController : ControllerBase
        {
    
            public ILoggerFactory _loggerFactory = null;
            public ILogger<TestController> _logger = null;
    
    
    
            public TestController(ILoggerFactory loggerFactory, ILogger<TestController> logger)
            {
                this._loggerFactory = loggerFactory;
                this._logger = logger;
            }
    
    
            [Route("get1")]
            [HttpGet]
            public IActionResult Get1()
            {
                this._loggerFactory.CreateLogger<TestController>().LogError("loggerFactory - 这里出了一个错误!");
    
                this._logger.LogError("logger - 这里出出现了一个错误!");
    
                return Ok("日志测试!");
            }
        }
    }
    View Code

    4. 查看日志

    方式二

    Startup文件

            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
                loggerRepository = LoggerManager.CreateRepository("NetCoreApp"); //我的项目名称叫NetCoreApp
    
                //指定配置文件
                XmlConfigurator.Configure(loggerRepository, new FileInfo("log4net.config"));
            }
    
    
            //为StartUp.cs添加属性
            public static ILoggerRepository loggerRepository { get; set; }

     log4net.config

    在项目跟目录下创建

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <log4net>
        <appender name="RollingAppender" type="log4net.Appender.RollingFileAppender">
          <!--指定日志文件保存的目录,目录可不在项目中-->
          <!--<file value="d:\AAloglog.txt"/>-->
          <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> 
    View Code

     创建 testController webapi控制器

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using log4net;
    using log4net.Repository.Hierarchy;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    
    namespace NETCORE.Log4Net2.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class TestController : ControllerBase
        {
            private ILog log;
    
            public TestController()
            {
                this.log = LogManager.GetLogger(Startup.loggerRepository.Name,typeof(TestController));
            }
    
    
            [Route("Get1")]
            [HttpGet]
            public IActionResult Get1()
            {
                this.log.Error("这里出现了一个错误");
    
                return new JsonResult(new { aaa="哈哈,test!"});
            }
    
        }
    }
    View Code

    运行后,可查看生成的日志文件


    项目:NETCORE.Log4Net1

    项目:NETCORE.Log4Net2
    附代码:https://gitee.com/wuxincaicai/NETCORE.git

    引用:https://blog.csdn.net/Fanbin168/article/details/89454051

  • 相关阅读:
    MFC中DoDataExchange()的作用
    图片下面出现空白像素的问题解决
    nginx 的 autoindex on首页不显示的问题 按照下面几行要写上不然不行
    配置 PHP 的 Session 存储到 Redis
    redis4安装
    jumpserver安装
    mysql命令参数详解
    定制LNMP的RPM包
    NTP原理
    内网环境NTP服务及时间同步(CentOS6.x)配置和部署
  • 原文地址:https://www.cnblogs.com/1285026182YUAN/p/13082949.html
Copyright © 2020-2023  润新知