电商网站开发服务,海南省建设工程质量安全检测协会网站,湘潭营销型网站建设,廊坊市 广阳区城市建设局网站欢迎来到《小5讲堂》 大家好#xff0c;我是全栈小5。 这是《C#》系列文章#xff0c;每篇文章将以博主理解的角度展开讲解#xff0c; 特别是针对知识点的概念进行叙说#xff0c;大部分文章将会对这些概念进行实际例子验证#xff0c;以此达到加深对知识点的理解和掌握。… 欢迎来到《小5讲堂》 大家好我是全栈小5。 这是《C#》系列文章每篇文章将以博主理解的角度展开讲解 特别是针对知识点的概念进行叙说大部分文章将会对这些概念进行实际例子验证以此达到加深对知识点的理解和掌握。 温馨提示博主能力有限理解水平有限若有不对之处望指正 目录 背景插件简介插件安装配置文件日志类型文件详情 日志设置命名空间实例化日志调用 输出控制台输出文本文档相关文章 背景
最近在最一些并发方式的测试发现自己之前封装的一个日志插件报错 尽管在写日志时已经通过锁的方式进行了优化但是依然无法解决并发时同一个文件同时访问情况 会频繁出现报错提示xxx.txt文件正在被另一个进程访问而不无法操作。 基于这个原因暂时没有想好很好的优化方案从而考虑使用第三方优秀日志插件来解决并发情况。
插件简介
Log4net 是一个稳定且功能丰富的日志库已经存在多年并且被广泛使用。 它支持多种输出目标和格式可以满足各种日志记录需求。 Log4net 具有灵活的配置选项允许你根据需要定制日志记录行为。
插件安装
在项目中添加对 Log4net 的引用。可以使用 NuGet 包管理器来安装 Log4net。 选择一个合适版本进行安装博主这里选择最新版本安装。
配置文件
日志类型
在 log4net 中日志类型一般分为以下几种对应不同的日志级别
1.DEBUG 最详细的日志级别通常用于打印一些调试信息仅在开发和调试阶段使用生产环境中通常不会记录 DEBUG 级别的日志。
2.INFO 用于记录程序正常运行时的重要信息比如服务启动、关键流程开始或结束等。对于用户而言通常不需要关注 INFO 级别的日志但这些日志对于开发人员来说非常重要。
3.WARN 表明潜在的问题但不会影响系统正常运行比如某个接口请求参数不合法程序采取了默认值处理或者磁盘空间不足但系统仍然能够正常运行。WARN 级别的日志用于提示开发人员和运维人员需要注意的问题。
4.ERROR 用于记录错误事件但不会导致程序终止。比如捕获到了一个异常程序进行了相应的处理不会导致程序崩溃。ERROR 级别的日志通常需要开发人员及时关注并处理。
5.FATAL 表示严重的错误事件可能导致程序终止。比如未捕获的异常、数据库连接失败等致命错误。FATAL 级别的日志表示系统出现了严重的错误需要立即处理。
文件详情
此配置文件内容按日志级别创建文件按时间年月日时来创建文件名同一小时内超过10M文件大小则拆分文件保存。
?xml version1.0 encodingutf-8 ?
log4net!--定义日志级别--rootlevel valueFATAL/level valueERROR/level valueWARN/level valueINFO/level valueDEBUG/appender-ref refFATALAppender /appender-ref refERRORAppender /appender-ref refWARNAppender /appender-ref refINFOAppender /appender-ref refDebugAppender //root!--严重错误日志--appender nameFATALAppender typelog4net.Appender.RollingFileAppenderfile typelog4net.Util.PatternString valuelogs\Fatal\%date{yyyyMMddHH}.log /appendToFile valuetrue /rollingStyle valueSize /staticLogFileName valuefalse/maximumFileSize value100KB/maxSizeRollBackups value-1/lockingModel typelog4net.Appender.FileAppenderMinimalLock /layout typelog4net.Layout.PatternLayoutconversionPattern value%date [%thread] %-5level %logger - %message - %line //layout/appender!--调试日志--appender nameDebugAppender typelog4net.Appender.RollingFileAppenderfile typelog4net.Util.PatternString valuelogs\Debug\%date{yyyyMMddHH}.log /appendToFile valuetrue /rollingStyle valueSize /staticLogFileName valuefalse/maximumFileSize value100KB/maxSizeRollBackups value-1/lockingModel typelog4net.Appender.FileAppenderMinimalLock /layout typelog4net.Layout.PatternLayoutconversionPattern value%date [%thread] %-5level %logger - %message - %line //layout/appender
/log4net通过使用不同级别的日志记录开发人员和运维人员可以更好地了解系统的运行情况及时发现潜在问题并采取相应的措施进行处理。 日志设置
命名空间
using log4net;
using log4net.Config;
using System.Reflection;实例化
// 日志插件
var logRepository LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(logRepository, new FileInfo(Path.Combine(AppContext.BaseDirectory, log4net.config)));日志调用
private static readonly ILog log LogManager.GetLogger(typeof(SqlHelper));public void Test()
{ log.Fatal(Fatal message);log.Debug(Debug message);log.Info(Info message);log.Warn(Warn message);log.Error(Error message);
}输出控制台
根据上面默认配置文件信息日志信息输出到控制台里。 使用的类型是log4net.Appender.ConsoleAppender
?xml version1.0 encodingutf-8 ?
log4netappender nameConsoleAppender typelog4net.Appender.ConsoleAppenderlayout typelog4net.Layout.PatternLayoutconversionPattern value%date [%thread] %-5level %logger - %message%line //layout/appenderrootlevel valueDEBUG /appender-ref refConsoleAppender //root
/log4net输出文本文档
根据上面默认配置文件信息日志信息输出到文本文档里。 使用的类型是log4net.Appender.Appender.RollingFileAppender
?xml version1.0 encodingutf-8 ?
log4net!--定义日志级别--rootlevel valueDEBUG/appender-ref refDebugAppender //root!--调试日志--appender nameDebugAppender typelog4net.Appender.RollingFileAppenderfile typelog4net.Util.PatternString valuelogs\Debug\%date{yyyyMMddHH}.log /appendToFile valuetrue /rollingStyle valueSize /staticLogFileName valuefalse/maximumFileSize value100KB/maxSizeRollBackups value-1/lockingModel typelog4net.Appender.FileAppenderMinimalLock /layout typelog4net.Layout.PatternLayoutconversionPattern value%date [%thread] %-5level %logger - %message - %line //layout/appender
/log4net相关文章
【C#】.net core 6.0 使用第三方日志插件Log4net配置文件详细说明 【C#】使用代码实现龙年春晚扑克牌魔术守岁共此时代码实现篇 【C#】使用代码实现龙年春晚扑克牌魔术守岁共此时流程描述篇 【C#】约瑟夫原理举例2个代码实现 【C#】List泛型数据集如何循环移动最后一位移动到第一位以此类推 【C#】获取文本中的链接通过正则表达式的方法获取以及优化兼容多种格式 温故而知新不同阶段重温知识点会有不一样的认识和理解博主将巩固一遍知识点并以实践方式和大家分享若能有所帮助和收获这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。