1.首先引入Log4Net的 Nuget包   第一个就是

2.复制所需配置文件(文件中包含写入文本日志和数据库日志, 自行根据注释选择所需) 取名   log4net.Config

<?xml version="1.0" encoding="utf-8"?>
<log4net>
<!-- Define some output appenders -->
<appender name="rollingAppender" type="log4net.Appender.RollingFileAppender">
<file value="log4\log.txt" />
<!--追加日志内容-->
<appendToFile value="true" /> <!--防止多线程时不能写Log,官方说线程非安全-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> <!--可以为:Once|Size|Date|Composite-->
<!--Composite为Size和Date的组合-->
<rollingStyle value="Composite" /> <!--当备份文件时,为文件名加的后缀-->
<datePattern value="yyyyMMdd.TXT" /> <!--日志最大个数,都是最新的-->
<!--rollingStyle节点为Size时,只能有value个日志-->
<!--rollingStyle节点为Composite时,每天有value个日志-->
<maxSizeRollBackups value="20" /> <!--可用的单位:KB|MB|GB-->
<maximumFileSize value="3MB" /> <!--置为true,当前最新日志文件名永远为file节中的名字-->
<staticLogFileName value="true" /> <!--输出级别在INFO和ERROR之间的日志-->
<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 - %message%newline"/>
</layout>
</appender> <!--SqlServer形式-->
<!--下载NuGet包: System. Data.SqlClient-->
<!--log4net日志配置:http://logging.apache.org/log4net/release/config-examples.html -->
<appender name="AdoNetAppender_SqlServer" type="log4net.Appender.AdoNetAppender">
<!--日志缓存写入条数 设置为0时只要有一条就立刻写到数据库-->
<bufferSize value="0" />
<connectionType value="System.Data.SqlClient.SqlConnection,System.Data.SqlClient, Version=4.6.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<connectionString value="Data Source=DESKTOP-T2D6ILD;Initial Catalog=LogManager;Persist Security Info=True;User ID=sa;Password=sa123" />
<commandText value="INSERT INTO Log4Net ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender> <root> <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--OFF:0-->
<!--FATAL:FATAL-->
<!--ERROR: ERROR,FATAL-->
<!--WARN: WARN,ERROR,FATAL-->
<!--INFO: INFO,WARN,ERROR,FATAL-->
<!--DEBUG: INFO,WARN,ERROR,FATAL-->
<!--ALL: DEBUG,INFO,WARN,ERROR,FATAL-->
<priority value="ALL"/> <level value="INFO"/>
<appender-ref ref="rollingAppender" />
<appender-ref ref="AdoNetAppender_SqlServer" />
</root>
</log4net>

3.program.cs  中引入配置

builder.Logging.AddLog4Net("CfgFile/log4net.Config");  //括号内容为上面配置文件所在地址,我这里是放在根目录下的CfgFile文件下。

4.到这里基础配置已完成,接下来就是使用啦!

新建一个MVC的Controller ,我这里随意取名为  SecendController ,依赖注入的方式打印日志

using Microsoft.AspNetCore.Mvc;

namespace Advanced.NET6.Project.Controllers
{
public class SecendController : Controller
{
public ILogger<SecendController> _Logger; public SecendController(ILogger<SecendController> logger)
{
_Logger = logger;
_Logger.LogInformation($"{this.GetType().Name}被构造了");
} public IActionResult Index()
{
_Logger.LogInformation($"{this.GetType().Name}被执行了");
return View();
}
}
}

  

5.最终日志文件会写入到相应的bin文件里面

最新文章

  1. 基于php的snmp管理端开发
  2. 【问题&amp;解决】解决 Android SDK下载和更新失败“Connection to https://dl-ssl.google.com refused”的问题
  3. HDU 1002 分类: ACM 2015-06-18 23:03 9人阅读 评论(0) 收藏
  4. SqlSugar常用增删改操作
  5. ♫【模式】Curry化
  6. MessageBox()功能
  7. SAX,DOM,JAXP,JDOM,DOM4J比较
  8. 本地如何使用phpstudy环境搭建多站点
  9. c++ dynamic_cast 和 static_cast 的区别
  10. 联发科AIoT平台i500处理器简介
  11. PHP进程信号处理
  12. C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
  13. .Net在操作mysql查询的时候出现“: Unknown column &#39;UserName&#39; in &#39;where clause&#39;”错误
  14. 源码解析之AQS源码解析
  15. T-SQL:谓词和运算符(六)
  16. libuv示例代码
  17. leetCode-linkedListCycle判断链表是否有环
  18. u3d性能优化
  19. 容器化RDS|计算存储分离 or 本地存储?
  20. Spark机器学习6&#183;聚类模型(spark-shell)

热门文章

  1. Android 内存缓存框架 LruCache 的实现原理,手写试试?
  2. 详解 Redis 中 big keys 发现和解决
  3. Leanote蚂蚁笔记-私人云笔记服务器搭建
  4. day02-功能实现01
  5. SQLMap入门——判断文本中的请求是否存在注入
  6. python 之列表(list)处理
  7. 【转载】SQL 2012以上版本分页查询更简单
  8. eclipse打不开maven项目中的pom.xml
  9. 【集成开发环境 (IDE)】Dev-Cpp下载与安装 [ 图文教程 ]
  10. Jekyll + GitHub Pages + Vercel纯免费搭建独立博客