zoukankan      html  css  js  c++  java
  • net core 2.1 集成log4net

    首先说明的我的例子是以net core的webapi为例子,除了log4net的nuget包之外还有一个扩展包Microsoft.Extensions.Logging.Log4Net.AspNetCore

    好了开始搭建项目

    创建项目就不说了,从创建好环境的配置说起

    1.引入上面说的2个包

    2.在Startup的Configure函数里面如下

     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory logger)
            {
                //添加日志描述
                logger.AddLog4Net();
    
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
                else
                {
                    app.UseHsts();
                }
        
                app.UseCors();
                app.UseMvc();
            }
    View Code

    3.在controler里面如下配置

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Logging;
    
    namespace PMP.Controllers
    {
        [Route("api/[controller]")]
        [ApiController]
        public class ValuesController : ControllerBase
        {
    
            private readonly ILogger loger;
            public ValuesController(ILogger<ValuesController> _loger)
            {
                loger = _loger;
            }
    
            // GET api/values
            [HttpGet]
            public ActionResult<IEnumerable<string>> Get()
            {
                loger.LogInformation("玫瑰花一样的女人");
                return new string[] { "value1", "value2" };
            }
           
     
        }
    }
    View Code

    4.注意引入的包

    5.log4net.config放到和Startup同级下

    <log4net>
    
      <root>
        <level value="ALL" ref="infoAppender" />
        <appender-ref ref="infoAppender" />
        <appender-ref ref="errorAppender" />
        <appender-ref ref="debugAppender" />
      </root>
    
      <!-- 日志的等级,它们由高到底分别为: OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL -->
      <!--信息日志配置-->
      <appender name="infoAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="Logsinfo.log" />
        <param name="AppendToFile" value="true" />
        <param name="MaxFileSize" value="10240" />
        <param name="MaxSizeRollBackups" value="100" />
        <param name="PreserveLogFileNameExtension" value="true" />
        <param name="StaticLogFileName" value="false" />
        <param name="DatePattern" value="yyyyMMdd" />
        <param name="RollingStyle" value="Date" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="&#xD;&#xA;Time:[%d]--Thread:[%t]--Class:[%C]--Method:[%M]--File:[%F]--Line:[%L]&#xD;&#xA;%m%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="INFO" />
          <param name="LevelMax" value="INFO" />
        </filter>
      </appender>
    
      <!--调试日志配置-->
      <appender name="debugAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="Logsdebug.log" />
        <param name="AppendToFile" value="true" />
        <param name="MaxFileSize" value="10240" />
        <param name="MaxSizeRollBackups" value="100" />
        <param name="PreserveLogFileNameExtension" value="true" />
        <param name="StaticLogFileName" value="false" />
        <param name="DatePattern" value="yyyyMMdd" />
        <param name="RollingStyle" value="Date" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="&#xD;&#xA;Time:[%d]--Thread:[%t]--Class:[%C]--Method:[%M]--File:[%F]--Line:[%L]&#xD;&#xA;%m%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="DEBUG" />
          <param name="LevelMax" value="DEBUG" />
        </filter>
      </appender>
    
      <!--错误日志配置-->
      <appender name="errorAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="LogsError.log" />
        <param name="AppendToFile" value="true" />
        <param name="MaxFileSize" value="10240" />
        <param name="MaxSizeRollBackups" value="100" />
        <param name="PreserveLogFileNameExtension" value="true" />
        <param name="StaticLogFileName" value="false" />
        <param name="DatePattern" value="yyyyMMdd" />
        <param name="RollingStyle" value="Date" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="&#xD;&#xA;Time:[%d]--Thread:[%t]--Class:[%C]--Method:[%M]--File:[%F]--Line:[%L]&#xD;&#xA;%m%n" />
        </layout>
        <filter type="log4net.Filter.LevelRangeFilter">
          <param name="LevelMin" value="ERROR" />
          <param name="LevelMax" value="ERROR" />
        </filter>
      </appender>
    </log4net>
    View Code

    6.elk里面grok过滤语法

    "^(Time:[%{TIMESTAMP_ISO8601:logger_time}]--Thread:[%{BASE16NUM:logger_pids}]--Class:[%{USERNAME:logger_Class}]--Method:[%{USERNAME:logger_Method}]--File:[s*(?<logger_descrption>.*?)s*]--Line:[%{BASE16NUM:logger_Line}]%{GREEDYDATA:msg})"
    View Code

    7.还有一个需要注意一下的操作就是log4net.config右击-->属性-->始终复制

    8.log4net.config因为引入了第三方包,里面的函数名称,行号,不能完美显示,最新的如下,见名知意

      Time:[%date]--Thread:[%thread]--Class:[%logger]--MESSAGE:[%message%]%newline--Exception:[%exception]%newline

      

      

  • 相关阅读:
    爬虫杂七杂八
    pycharm使用技巧
    python杂七杂八
    mysql杂七杂八
    mysql常见函数总结:
    CF1030F Putting Boxes Together
    AT2688 [ARC080C] Young Maids
    P5280 [ZJOI2019]线段树
    雨的味道
    P2572 [SCOI2010]序列操作
  • 原文地址:https://www.cnblogs.com/hkyyqqq/p/10375715.html
Copyright © 2011-2022 走看看