.NET6.0的日志组件Log4net

article/2025/9/29 15:49:28

前言:不允许让没有任何日志监控的项目上线,所以说真正开发起来必须要有监控,相当于多一双眼睛帮着我们看项目在运行时会不会有什么问题,我们要不断的在每个环节写日志,这样发生异常我们可以快速知道哪里有问题了,就可以快速解决。

目录

一、Log4net介绍

二、Log4net日志级别

三、Log4net写文本日志

四、Log4net日志写SqlServer


一、Log4net介绍

       Log4net是一个开源日志记录组件。是.Net下一个非常优秀的开源日志记录组件。Log4net记录日志的功能非常强大。它可以将日志分不同的等级,以不同的格式,输出到不同的媒介。通过它可以将.Net应用程序的日志记录到多种介质之中,包括:文件、控制台、window事物日志和数据库中,并且我们还可以设置和标示日志的级别等。和其它大多开源组件一样,Log4net也是从Java项目过度而来。Log4net来源于java应用中的Log4J。

二、Log4net日志级别

       日志的本质就是我们整个系统里面当前运行的一个状况,那么日志级别根据它的控制级别一共从低到高分为了:ALL→DEBUG→INFO→WARN→ERROR→FATAL→OFF,那这些级别都代表什么呢?DEBUG就是调试状态,INFO相当于平常的危险程度,WARN有一些危险,ERROR就是系统有异常了,FATAL就是非常严重了,可能系统已经崩了,我们在配置的时候可以去过滤一些级别。

三、Log4net写文本日志

1、我们要在我们的项目上右键点击管理NuGet程序包

2、在搜索框搜索Log4net进行安装

安装好了之后我们就会发现在项目目录里的依赖包下多了个log4net,但是现在还不够,我们得去搭配配置文件去使用

 3、可以去官网下载配置文件,也可以复制下面代码为Log4net.config文件,把这个文件复制进项目目录,配置文件右键属性选择设置为始终复制,因为我们最终这个配置文件要用到我们项目的运行目录下的。Apache log4net – Apache log4net: Config Example - Apache log4net

<?xml version="1.0" encoding="utf-8" ?> <log4net><!-- Define some output appenders --><!--Type 表示用那种类型记录日志--><appender name="rollingAppender" type="log4net.Appender.RollingFileAppender"> <!--表示用文本来记录日志--><file value="log\log.txt" /><!--<file value="D:\MyLog1\Onelog.txt" />--><!--追加日志内容--><!--<appendToFile value="false" />--><appendToFile value="true" /><!--防止多线程时不能写Log,官方说线程非安全--><lockingModel type="log4net.Appender.FileAppender+MinimalLock" /><!--最小锁--><!--配置Unicode编码--><Encoding value="UTF-8" /><!--是否只写到一个文件里--><param name="StaticLogFileName" value="false" /><!--当备份文件时,为文件名加的后缀,这里可以作为每一天的日志分别存储不同的文件--><datePattern value="yyyyMMdd&quot;.txt&quot;" /><!--可以为:Once|Size|Date|Composite--><!--Composite为Size和Date的组合--><!--<rollingStyle value="Composite" />--><rollingStyle value="Size" /><!--日志最大个数,都是最新的--><!--rollingStyle节点为Size时,只能有value个日志文件--><!--rollingStyle节点为Composite时,每天有value个日志--><maxSizeRollBackups value="2" /><!--可用的单位:KB|MB|GB--><maximumFileSize value="2MB" /><!--置为true,当前最新日志文件名永远为file节中的名字--><staticLogFileName value="true" /><!--过滤器--><!--阻止所有事件被记录--><!--<filter type="log4net.Filter.DenyAllFilter"> </filter>--><!--只有指定等级的日志事件才被记录--><!--<filter type="log4net.Filter.LevelMatchFilter"><param value="FATAL" /></filter>--><!--日志等级在指定范围内的事件才被记录--><!--<filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="ERROR" /><param name="LevelMax" value="FATAL" /></filter>--><layout type="log4net.Layout.PatternLayout"><!--日志输出格式:时间  日志类型  日志内容--><conversionPattern value="%date [%thread] %-5level %logger - %message%newline"/></layout></appender><!-- levels: OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL --><root><priority value="ALL"/><level value="ALL"/><appender-ref ref="rollingAppender" /></root></log4net>

4、接下来我们就要读取Log4net里面的相关配置,然后支持他的一个使用。其实我们可以直接基于这个builder,这个builder其实就是WebApplicationBuilder,本身它这里就是有日志的

我们可以看到AddLog4Net()是失效的(正常下载了一个程序集这里应该有红线,我为了方便两个一起都下载了)

于是我们再次从NuGet引入Microsoft.Extensions.Logging.Log4Net.AspNetCore,下载安装后红线就没有了,就生效了,就和上面的图片一样了。

 5、要是我们把Log4Net文件放到项目目录下的话,就能默认读取。但是你要是把它放在文件夹里头,就得在后面写上路径。

 6、配置完成之后咱们可以去新建一个控制器和视图看看咱们是不是配置成功了,在新建的控制器里构造一个函数,输入测验代码,并运行。输入视图文件地址,按回车。然后打开我们的项目根目录在bin/debug/net6.0目录下可以看到log文件夹,里面有个log.txt文件,打开就可以看到我们写的东西。

 

 总结一下Log4net的文本文件配置过程

(1)Nuget引入程序包

(2)准备好配置文件

(3)配置读取配置文件生效

(4)注入得到Log4net实例开始写日志

四、Log4net日志写SqlServer

        Log4net日志不光可以写SqlServer,还可以写MySQL、Oracle数据库等等,那么我们下面就看一看Log4net日志是怎么去写SqlServer日志的。

1、第一步还是去NuGet里面去下载安装一下程序集

 2、程序集引入进来之后,我们就要去修改配置文件,让它支持写数据库,打开我们的配置文件,就可以看到有这么一行节点代码,这行节点代码就代表着我们使用的是哪种类型记录日志的写法,比如我是写数据库类型的呢?还是写文本日志类型的呢?就看这个节点。

 然后我们把SqlServer的相关配置代码引用进来,还是可以去官网下载,我把官网的这一部分追加配置放到下面了,直接复制进去也是可以的。

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"><bufferSize value="100" /><connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /><connectionString value="data source=[database server];initial catalog=[database name];integrated security=false;persist security info=True;User ID=[user];Password=[password]" /><commandText value="INSERT INTO Log ([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>

粘贴好之后我们就发现代码里红框区域和我们刚才下载的程序集一样,这个就是数据库驱动程序,这就是我们刚才为什么要下载程序集的原因。

 3、我们需要在root里加入支持数据库写日志的规则,其实到目前为止,Log4net已经同时支持文本和数据库写日志了打开SqlServer,要是没有可以去官网下个免费版,然后找教程安装一下。SQL Server 下载 | Microsoft

4、我这里是添加了一个在网上找的数据库脚本,然后还是运行下一控制器里的代码。我们就可以在数据库里看到运行结果。

项目根目录在bin/debug/net6.0目录下可以看到log文件夹,里面有个log.txt文件,打开就可以看到我们写的东西。

 总结一下Log4net的数据库配置过程

(1)Nuget引入程序包

(2)修改配置文件,支持写数据库

(3)初始化数据库日志表

(4)注入得到Log4net实例开始写日志


http://chatgpt.dhexx.cn/article/t034M8e8.shtml

相关文章

Unity接入日志插件Log4Net

前言 log4net是一个日志插件&#xff0c;可以帮助我们把控制台输出的日志写入到本地。这个功能说简单就简单&#xff0c;说复杂其实还挺复杂。 为什么这么说呢&#xff0c;首先文件写入本地确实简单&#xff0c;但是如果你要实现一下功能就没那么简单了。 1.把每行日志按照指…

log4net多进程丢失日志的解决方法

首先为什么会有多进程同时记录日志到同一个文件夹同一个文件里呢&#xff0c;每个项目肯定有每个项目的特殊性&#xff0c;我这里.net的BS项目&#xff0c;主要是因为在IIS里&#xff0c;应用程序池&#xff0c;最大工作进程设置成2&#xff0c;就会出现2个w3p什么的进程同时运…

C# log4net 日志输出超详细

思路&#xff1a; 1.安装插件&#xff1a;安装log4net 2.使用配置&#xff1a;添加log4net配置信息 3.输出日志文件格式&#xff1a;添加日志配置 4.AssemblyInfo.cs中配置 第一步&#xff1a;安装log4net 第二步&#xff1a;在app.config添加log4net配置 新增log4net.config…

.Net Core3.1 集成Log4net

准备 第一步&#xff1a;nuget 引用 Microsoft.Extensions.Logging.Log4Net.AspNetCore 第二步&#xff1a;在项目中添加log4net.config的配置文件(配置文件在文末) 第三步&#xff1a;在项目中注册使用log4net 方法一&#xff1a;在Program.cs中注册&#xff0c;找到 Prog…

C#上位机开发(十三)—— 使用Log4net添加日志记录功能

一、Log4net 官方网站:https://logging.apache.org/log4net/。 下载二进制dll库: 包中提供了针对各个版本的dll库: 二、使用日志库 1. 添加库 复制对应的库文件到项目中: 2. 配置log4net 2.1. 创建配置文件 添加后修改该文件设置:

unity log4net

log4.et.confog.xml <?xml version"1.0" encoding"utf-8" ?><log4net> <appender name"Error" type"log4net.Appender.RollingFileAppender"> <lockingModel type"log4net.Appender.FileAppenderMinimal…

C#-Winform之log4net使用详细记录

一、作用 提供一个记录日志的框架&#xff0c;可以将日志信息记录到文件、控制台、Windows事件日志和数据库&#xff08;MSSQL、Acess、Oracle、DB2和SQLite等&#xff09;。 二、操作步骤 1.在项目中添加对log4net.dll的引用&#xff08;通过NuGet可以直接安装&#xff09; …

log4net在linux中不生成日志,log4net使用记录

1、在程序中引用log4net.dll 2、添加-新建配置文件Log4Net.config&#xff0c;并在文件属性中“复制到输出目录”选中“始终复制”&#xff0c;文件内容如下&#xff1a; 3、在AssemblyInfo.cs中添加代码&#xff0c;用于调用Log4Net.config&#xff1a; [assembly: log4net.Co…

log4net在.Net Core使用

log4net的使用&#xff0c;可以把日志信息输出到各种不同终端&#xff08;文本文件、数据库、windows日志等&#xff09;&#xff0c;实现过程主要是各种输出方式的配置文件怎样配置&#xff1a; 1.安装log4net包 如果需要输出到数据库&#xff0c;相应的引入包 注意&#xf…

C#log4net的使用教程

1.我们在工具层使用NuGet添加log4net引用包 2.添加LogHelper帮助类 public class LogHelper{private static ILog _lognet LogManager.GetLogger(typeof(LogHelper));public static void WriterErrorLog(string logMessage) {_lognet.Error(logMessage);}public static void W…

C# log4net日志库的简单使用

C# log4net日志库的简单使用 一、简述 记--log4net日志开源库的简单使用&#xff1a;控制日志文件大小&#xff0c;日志文件个数&#xff0c;滚动式覆盖&#xff0c;自由控制日志打印等级 例子打包&#xff1a;外链:https://wwa.lanzoui.com/b0c9qvfqf 密码:67y7 二、下载log…

关于log4net的详细使用教程

1、下载log4net并添加引用或通过NuGet安装程序包 2、配置文件中添加配置 在配置文件web.config或App.config中的Configuration节点下增加以下配置 <configSections><section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler, …

.Net使用log4net

1.使用Nuget下载log4net 2.、新建Config文件夹&#xff0c;将log4net配置文件放入此文件夹中&#xff08;当修改web.config的时候会重启网站&#xff0c;所以把log4net单独出来比较好&#xff0c;也好管理&#xff09;&#xff0c;log4net配置&#xff1a; <?xml version…

Log4Net 使用方法

第一步&#xff1a;安装nuget log4net包 第二步&#xff1a;新建log4net.config配置文件&#xff0c;配置日志输出格式 <?xml version"1.0"?> <configuration><configSections><section name"log4net" type"log4net.Config.L…

完整Log4Net配置信息,详细注释

<?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/></configSections>&l…

Log4Net 详解

1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目&#xff0c;它是Log4j 的一个克隆版。我们可以控制日志信息的输出目的地。Log4net中定义了多种日志信息输出模式。它可以根据需要将日志输出到控制台&#xff0c;文本文件&#xff…

第一节:框架前期准备篇之Log4Net日志详解

一. Log4Net简介 Log4net是从Java中的Log4j迁移过来的一个.Net版的开源日志框架&#xff0c;它的功能很强大&#xff0c;可以将日志分为不同的等级&#xff0c;以不同的格式输出到不同的存储介质中&#xff0c;比如&#xff1a;数据库、txt文件、内存缓冲区、邮件、控制台、ANS…

Log4net详细教程

Log4net详细教程 一、Log4net概述log4net主要几个方法&#xff1a; 二、配置教程1、配置文件详解2、程序配置文件3、日志帮助类的编写 一、Log4net概述 log4net 是从 java 下有卓越表现的 log4j 移植过来的&#xff0c;是一个能够将日志信息输出到各种 不同目标的.net 类库&am…

Log4Net详解

Log4Net详解 零、文章目录 一、Log4Net详解 1、功能概述 &#xff08;1&#xff09;概述 Log4net库是.Net下一个非常优秀的开源日志记录组件&#xff0c;是一个帮助程序员将日志信息输出到各种目标&#xff08;控制台、文件、数据库等&#xff09;的工具。如果应用程序出现…

C#【必备技能篇】log4net的使用

使用log4net大致分以下几步&#xff1a; 1.安装 log4net&#xff0c;通过 Nuget 下载&#xff08;或者有log4net.dll的话&#xff0c;直接引用即可&#xff09; 2.新建 log4net.config 配置文件 <?xml version"1.0" encoding"utf-8" ?> <con…