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="Logs\info.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="Logs\debug.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="Logs\Error.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右擊-->屬性-->始終複製

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章