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

目录

一、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实例开始写日志

.NET6.0的日志组件Log4net相关推荐

  1. . NET6 Core 日志组件Log4net和Nlog

    Log4net 本项目用的Core (控制器-视图-模型) 引包 log4net 新建 log4net.config 文件中如下代码 <?xml version="1.0" ...

  2. .Net Core 日志组件log4net的Log4NetHelper类

    之前介绍了log4net的在.net core下的使用方法,但是每次调用起来都比较麻烦 private ITestService _TestService;private IUserInfo _Use ...

  3. C#输出日志文件——log4net组件

    C#输出日志文件--log4net组件 前言 最近在写一个Winform项目,发现不知道怎么查看相关的输出信息来判断逻辑,经过一番搜索终于了解到这个一个非常好用的组件--log4net. log4ne ...

  4. .net中,日志组件 Nlog,SerialLog, Log4Net的用法

    源码:https://download.csdn.net/download/helldoger/85778816 以.NET6 Winform为例 <Project Sdk="Micr ...

  5. ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)

    对于一个大型网站与系统来说,日志是必备的工具,通过日志你可以非常清楚程序的运行情况,及时得到反馈来解决问题,下面介绍ASP.NET版本的log4Net日志组件是个非常强大的工具,最新版本for .ne ...

  6. Work Time Manager【开源项目】- 创建自己日志组件 2.0重构

    这次我们真是开始来聊聊开源项目里,小而有用的模块或者组件的开发思想. 同时,软件已经更新到1.60的版本了,支持新用户注册,可以不再使用统一的test账户了. 您可以通过以下路径进行下载: 1.在Gi ...

  7. 基于log4net的日志组件扩展封装,实现自动记录交互日志 XYH.Log4Net.Extend(微服务监控)...

    背景: 随着公司的项目不断的完善,功能越来越复杂,服务也越来越多(微服务),公司迫切需要对整个系统的每一个程序的运行情况进行监控,并且能够实现对自动记录不同服务间的程序调用的交互日志,以及通一个服务或 ...

  8. ASP.NET Core 2.0 配置NLog日志组件

    2019独角兽企业重金招聘Python工程师标准>>> 1).添加nlog.config配置文件 <?xml version="1.0" encoding= ...

  9. Enterprise Library2.0研究(一)日志组件的使用场景

    Enterprise Library2.0刚刚发布了December 2005的release,多了configuration的工具,真是及时,就不用自己做了.被安排看日志这一块,就开始翻译官方的do ...

最新文章

  1. 成长秘笈:是你教我,不是我教你
  2. ERROR: Failed to find Platform SDK with path: platforms;android-27
  3. python编程入门教学电子书-Python编程入门电子书教程,看这几个就够了
  4. MATLAB实战系列(二十一)-基于遗传算法的BP神经网络优化算法(附MATLAB代码)
  5. c语言如何用fscanf将字符串读取,在c语言中如何将文本内容 赋给一个 字符串
  6. 解决问题的经验-javaweb-第一次-已掌握技术栈大致总结(部分),和相关理解,总结,以及对未来学习方向的规划
  7. 如何用postman发送新浪微博
  8. Ubuntu下安装nfs服务
  9. python标准库之urllib, httplib, urllib2
  10. Python并发机制的实现(一)——多进程
  11. BLUE引擎M2运行几天后就不可以施放合击技能的方法
  12. adb 静默安装_apk 静默安装
  13. 名企真题-警察抓小偷游戏——数学
  14. 数据库操作(DML,DCL,DQL)
  15. easyx游戏编程:魔塔(c++语言开发)源码
  16. 蓝牙bluez进行HCI编程
  17. 网页或公众号微信网页抓包软件Fiddler的正确安装使用!
  18. p20华为云电脑白屏_华为云电脑体验评测,原来手机办公、修图这么强大了
  19. 07-图6 旅游规划
  20. 论文笔记目录(ver2.0)

热门文章

  1. gitlab.rb 文件配置详解
  2. 2021年全球与中国医药包装机械行业市场规模及发展前景分析
  3. 超级计算机搞笑图,搞笑图片幽默段子笑话:哥们,你的脚上下差距太大了吧,黑白分明...
  4. Java字符串截取冒号(:)之后的内容
  5. Windows下试用jvm-sandbox-repeater
  6. 阿里云安装 minikube v1.9.2
  7. 计算机辅助设计maya,计算机辅助设计——MAYA.docx
  8. CF1474A Puzzle From the Future
  9. 24岁了,做个精致的电子工程师
  10. oracle定时器每天下午6点_每天早晨6点的隆江镇,已经有一半人在吃猪脚饭!#吃在中国#...