net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二配置log4net
Posted 圆滚滚的胖狸
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二配置log4net相关的知识,希望对你有一定的参考价值。
注意:所有的Nuget包默认都装在NET6Demo_WebApi项目下,其它类库项目按需添加
第一步,安装nuget包。
第二步,添加log4net的配置文件
在api层,添加文件夹Config,然后添加log4net.config文件
log4net 在.net6 中对写入数据库并不友好,不建议写入数据库
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!--根配置-->
<!--<root>
--><!--日志级别:可选值: ERROR > WARN > INFO > DEBUG --><!--
<level value="ERROR"/>
<level value="WARN"/>
<level value="INFO"/>
<level value="DEBUG"/>
<appender-ref ref="ErrorLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="InfoLog" />
<appender-ref ref="DebugLog" />
</root>-->
<root>
<priority value="ALL"/>
<level value="ALL"/>
<appender-ref ref="ErrorLog" />
<appender-ref ref="WarnLog" />
<appender-ref ref="InfoLog" />
<appender-ref ref="DebugLog" />
</root>
<!-- 错误 Error.log-->
<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<file value="Log\\\\LogError\\\\"/>
<!--防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--文件名,按日期生成文件夹-->
<datePattern value="yyyyMMdd".log""/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%dHH:mm:ss]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<LevelMin value="ERROR" />
<LevelMax value="ERROR" />
</filter>
</appender>
<!-- 警告 Warn.log-->
<appender name="WarnLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<file value="Log\\\\LogWarn\\\\"/>
<!--防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--文件名,按日期生成文件夹-->
<datePattern value="yyyyMMdd".log""/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%dHH:mm:ss]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<LevelMin value="WARN" />
<LevelMax value="WARN" />
</filter>
</appender>
<!-- 信息 Info.log-->
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<file value="Log\\\\LogInfo\\\\"/>
<!--防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--文件名,按日期生成文件夹-->
<datePattern value="yyyyMMdd".log""/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%dHH:mm:ss]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<LevelMin value="INFO" />
<LevelMax value="INFO" />
</filter>
</appender>
<!-- 调试 Debug.log-->
<appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
<!--目录路径,可以是相对路径或绝对路径-->
<file value="Log\\\\LogDebug\\\\"/>
<!--防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--文件名,按日期生成文件夹-->
<datePattern value="yyyyMMdd".log""/>
<!--追加到文件-->
<appendToFile value="true"/>
<!--创建日志文件的方式,可选值:Date[日期],文件大小[Size],混合[Composite]-->
<rollingStyle value="Composite"/>
<!--写到一个文件-->
<staticLogFileName value="false"/>
<!--单个文件大小。单位:KB|MB|GB-->
<maximumFileSize value="200MB"/>
<!--最多保留的文件数,设为"-1"则不限-->
<maxSizeRollBackups value="-1"/>
<!--日志格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="[%dHH:mm:ss]%m%n"/>
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<LevelMin value="DEBUG" />
<LevelMax value="DEBUG" />
</filter>
</appender>
</log4net>
</configuration>
在项目Utility中添加类Loh4Extention.cs
代码内容如下。主要是过滤掉日志中太多的重复信息。注意代码粘贴后会报错,多是因为没有安装包。解决方法就是哪里报错就在哪里安装包
using Microsoft.Extensions.Logging;
namespace NET6Demo.Utility.Log
public static class Log4Extention
public static void InitLog4(ILoggingBuilder loggingBuilder)
loggingBuilder.AddFilter("System", LogLevel.Warning);
loggingBuilder.AddFilter("Microsoft", LogLevel.Warning);//过滤掉系统默认的一些日志
loggingBuilder.AddLog4Net(new Log4NetProviderOptions()
Log4NetConfigFileName = "Config/log4net.config",
Watch = true
);
program.cs文件中添加以下代码,添加log4net全局引用.注意代码粘贴后会报错,多是因为没有安装包,或者没有引用。解决方法就是哪里报错就在哪里安装包
#region 添加Log4net
builder.Host.ConfigureLogging((context, loggingBuilder) =>
Log4Extention.InitLog4(loggingBuilder);
);
#endregion
使用时依赖注入,现在开始建立控制器
先建立一个基类控制器,再建一个测试控制器继承基类控制器
BaseController.cs
using Microsoft.AspNetCore.Mvc;
namespace NET6Demo_WebApi.Controllers
[ApiController]
public abstract class BaseController : ControllerBase
TestController.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace NET6Demo_WebApi.Controllers
public class TestController : BaseController
private ILogger<TestController> _logger;
public TestController(ILogger<TestController> logger)
_logger = logger;
[AllowAnonymous]
[HttpGet("GetTest")]
public async Task<IActionResult> GetTestResult()
Console.WriteLine("测试一下输出日志");
_logger.LogInformation("日志输出了");
return Ok();
启动项目,来测试一下,打开swagger首页,点击Test的try it out ,然后点击 Execute ,让程序执行
控制台可以看到输出内容
打开项目的bin文件夹,可以看到已经生成的log目录
找到其中的loginfo,因为刚刚的日志是用log.infomation写入的。
由日期生成的文件名,打开可以看到日志内容已被写入
到此。log4net配置完毕。注意所有使用log4net的类,都需要依赖注入ILogger
以上是关于net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二配置log4net的主要内容,如果未能解决你的问题,请参考以下文章
net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)二配置log4net
net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT
net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT
net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)六添加身份验证,引入JWT
net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger
net6 项目搭建及引用框架记录(log4net,autofac,exception,api result,jwt,efcore)一建立项目,使用Swagger