首先說明的我的例子是以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(); }
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" }; } } }
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="
Time:[%d]--Thread:[%t]--Class:[%C]--Method:[%M]--File:[%F]--Line:[%L]
%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="
Time:[%d]--Thread:[%t]--Class:[%C]--Method:[%M]--File:[%F]--Line:[%L]
%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="
Time:[%d]--Thread:[%t]--Class:[%C]--Method:[%M]--File:[%F]--Line:[%L]
%m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net>
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})"
7.還有一個需要注意一下的操作就是log4net.config右擊-->屬性-->始終複製