C# Log4Net应用
1 需求分析
日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下
1,日志文件统一保存到项目启动目录下的logs文件夹
2,以天为单位进行日志文件的保存
2 环境配置
通过NuGet直接搜索log4net进行安装
3 编写配置文件
在项目目录下新建log4net.config文件
4 设置log4net.config的属性
设置log4net.config的属性为复制到输出目录,否则在程序运行时无法加载配置文件
log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><log4net><!--其中layout节点的配置说明:%m(message):输出的日志消息;%n(newline):换行;%d(datetime):输出当前语句运行的时刻;%r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数;%t(threadid):当前语句所在的线程ID ;%p(priority): 日志的当前日志级别;%c(class):当前日志对象的名称;%L:输出语句所在的行号;%F:输出语句所在的文件名;%-10:表示最小长度为10,如果不够,则用空格填充;--><appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"><!--日志路径--><param name= "File" value= "logs\\info\\"/><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--是否是向文件中追加日志--><param name= "AppendToFile" value= "true"/><!--最大的文件大小,默认的文件大小是10MB。--><maximumFileSize value="5MB" /><!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定--><param name= "MaxSizeRollBackups" value= "10"/><!--日志文件名是否是固定不变的--><param name= "StaticLogFileName" value= "false"/><!--日志文件名格式为:2022-05-22.log--><!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>--><!--文件名,按日期生成文件夹--><param name="DatePattern" value="/yyyy-MM/"Info_"MM-dd-HH".log""/><!--日志根据日期滚动--><param name= "RollingStyle" value= "Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%L] - %m %n" /></layout><!--过滤器--><filter type="log4net.Filter.LevelRangeFilter"><!--用于过滤掉Fatal类型的异常--><levelMax value="ERROR"/><levelMin value="INFO"/></filter><filter type="log4net.Filter.DenyAllFilter"/><!--不加这个过滤器也可以--></appender><appender name="ExceptionAppender" type="log4net.Appender.RollingFileAppender"><!--日志路径--><param name= "File" value= "logs\\Exception\\"/><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--是否是向文件中追加日志--><param name= "AppendToFile" value= "true"/><!--最大的文件大小,默认的文件大小是10MB。--><maximumFileSize value="5MB" /><!--当日志文件达到MaxFileSize大小,就自动创建备份文件。备份文件的多少由MaxSizeRollBackups决定--><param name= "MaxSizeRollBackups" value= "10"/><!--日志文件名是否是固定不变的--><param name= "StaticLogFileName" value= "false"/><!--日志文件名格式为:2022-05-22.log--><!--<param name= "DatePattern" value= "yyyy-MM-dd HH'.log'"/>--><!--文件名,按日期生成文件夹--><param name="DatePattern" value="/yyyy-MM/"fault_"MM-dd-HH".log""/><!--日志根据日期滚动--><param name= "RollingStyle" value= "Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%L] %M- %m %n" /></layout><!--过滤器--><filter type="log4net.Filter.LevelMatchFilter"><!--只保留Falat类型的log--><levelToMatch value="FATAL"/></filter><!--阻止其他日志事件被记录,若不使用该过滤器,其他类型的信息将继续输出--><filter type="log4net.Filter.DenyAllFilter"/><!--不加这个过滤器也可以--></appender><!--<root>--><!--(高) OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL (低) --><!--<level value="all" />--><!--<appender-ref ref="ColoredConsoleAppender"/>--><!--<appender-ref ref="RollingLogFileAppender"/></root>--><appender name="控制台输出" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" /></layout></appender><logger name="Test"><!--指示高于此等级的方可输出--><level value="WARN"/><appender-ref ref="控制台输出" /></logger><logger name="loggerAppender"><level value="ALL"/><appender-ref ref="RollingLogFileAppender" /><appender-ref ref="ExceptionAppender" /></logger></log4net>
</configuration>
5 代码编写
5.1 添加配置信息
在AssemblyInfo.cs中添加log4net的配置信息,指定默认配置文件为程序运行目录下的log4net.config文件,Watch标志指示当配置文件发生更改时进行重新加载,以做到实时更新配置信息.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
5.2 代码
class Program{static void Main(string[] args){log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.config"));ILog logger = LogManager.GetLogger("Test2");ILog logger2 = LogManager.GetLogger("Test");logger.Info("信息Info");logger.Warn("异常Warn");logger.Error("错误Error");try{string a = null;a.ToString();}catch (Exception ex){logger.Fatal(ex.Message, ex);}logger2.Info("信息Info");logger2.Warn("异常Warn");logger2.Error("错误Error");Console.WriteLine("日志生成完成!");Console.ReadKey();}}
6 扩展资料连接
https://blog.csdn.net/u013066730/article/details/117248306
https://blog.csdn.net/weixin_44900027/article/details/128732197
https://www.cnblogs.com/liquorbin/archive/2012/05/11/2496284.html
相关文章:
C# Log4Net应用
1 需求分析 日志记录是程序开发中必不可少的环节,对于bug调试和后期项目维护都十分重要.其中Log4net是C#环境下广泛使用的日志记录库,功能十分强大.本教程提供的日志记录需求如下 1,日志文件统一保存到项目启动目录下的logs文件夹 2,以天为单位进行日志…...
pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器
默认情况下,pytest 使用pytest.Package来收集包含 __init__.py 文件的目录,使用 pytest.Dir来收集其他目录。如果你想要自定义目录的收集方式,你可以编写自己的pytest.Directory 收集器,并使用 pytest_collect_directory钩子来连接…...
c语言第七天笔记
作业题: 设计TVM(地铁自动售票机)机软件。 输入站数,计算费用,计费规则,6站2元,7-10站3元,11站以上为4元。 输入钱数,计算找零(找零时优先找回面额大的钞票)࿰…...
软件测试经理工作日常随记【8】-UI自动化_加密接口的传输
软件测试经理工作日常随记【8】-UI自动化_加密接口的传输 工具类 #utils_api.py class RequestUtils:classmethoddef send_request_splicing(cls, dicts, url): # 对应请求的入参及请求的函数Logger.logger_in().info(-----------------{}接口开始执行-----------------.for…...
基于FPGA的出租车计费系统设计---第一版--郝旭帅电子设计团队
欢迎各位朋友关注“郝旭帅电子设计团队”,本篇为各位朋友介绍基于FPGA的出租车计费系统设计—第一版 功能说明: 收费标准(里程):起步价5元,包括三公里;三公里之后,每公里2元&#x…...
商汤联合建工社共同打造“住建领域法规标准知识大模型”
近日,商汤科技与中国建筑出版传媒有限公司(下称“建工社”)共同发布“住建领域法规标准知识大模型”,共同探索新型知识服务模式。大模型聚焦建筑行业,以商汤“日日新SenseNova 5.5”大模型体系为基础,结合海…...
基于STM32的智能交通监控系统教程
目录 引言环境准备智能交通监控系统基础代码实现:实现智能交通监控系统 车辆检测模块交通流量分析模块通信与网络系统实现用户界面与数据可视化应用场景:交通管理与优化常见问题与解决方案收尾与总结 引言 随着城市化进程的加快,交通拥堵问…...
Git和TortoiseGit的安装与使用
文章目录 前言一、Git安装步骤查看版本信息 二、TortoiseGit安装中文语言包TortoiseGit 配置不同语言 Git基本原理介绍及常用指令 GitLab添加TortoiseGIT生成SSH Key 前言 Git 提供了一种有效的方式来管理项目的版本,协作开发,以及跟踪和应用文件的变化…...
改进YOLOv5:加入非对称卷积块ACNet,加强CNN 的内核骨架,包含VOC对比实验
🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…...
论文解读(12)-Transfer Learning
这个也是看论文的时候看到的,但是对这方面不是理解,需要对这方面知识点进行一个补充。 参考: 迁移学习概述(Transfer Learning)-CSDN博客 1. 什么是Transfer Learning? Transfer Learning就是迁移学习&…...
力扣高频SQL 50题(基础版)第三十八题
文章目录 力扣高频SQL 50题(基础版)第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题(基础版)第三十八题 1484.按日期分组销售产品 题目说明 表 Activities: ---…...
大模型下的视频理解video understanding
数据集 Learning Video Context as Interleaved Multimodal Sequences Motivation: 针对Narrative videos, like movie clips, TV series, etc.:因为比较复杂 most top-performing video perception models 都是研究那种原子动作or人or物 understandin…...
【网络安全】CR/LF注入+Race Condition绕过MFA
未经许可,不得转载。 文章目录 漏洞1:CR/LF注入前言正文漏洞2:Race Condition绕过MFA前言正文漏洞1:CR/LF注入 前言 ExaHub(此处为虚拟名称)是一个专为 Exa 编程语言的爱好者和专业人士量身定制的平台。Exa 语言以其出色的速度和性能而闻名,广泛应用于科学计算、机器学…...
深度学习入门——卷积神经网络
本章的主题是卷积神经网络(Convolutional Neural Network,CNN)。CNN被用于图像识别、语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以CNN为基础。本章将详细介绍CNN的结构,并用Python实…...
快团团供货大大团长帮卖团长如何线上结算和支付货款?
一、如何支付结算单? 团长在快团团小程序【我的供货商】—【结算单】—【待支付】中,找到需要支付的结算单,点击【去支付】即可。 当有多笔结算单待支付时,团长可筛选供货商和日期找到需要支付的结算单,点击【去批量…...
vite vue3 Webstorm multiple export width the same name “default“
系统格式不一样,导致代码文件格式冲突导致的,解决方法找到对应的文件,将文件类型切换成LF。...
Transformer预测模型及其Python和MATLAB实现
### 一、背景 在自然语言处理(NLP)领域,传统的序列到序列(Seq2Seq)模型大多依赖于循环神经网络(RNN)和长短期记忆(LSTM)网络。这些模型虽然在许多任务中取得了成功&…...
草的渲染理论
Unity引擎提供了基础的terrain工具,可以制作地形,在上面刷树刷草。对于树,Unity是支持带LOD的Prefab,不同距离显示不同细节的模型,效果还不错。对于草,Unity支持两种方式来刷草,一种是Add Grass…...
Redis:十大数据类型
键(key) 常用命令 1. 字符串(String) 1.1 基本命令 set key value 如下:设置kv键值对,存货时长为30秒 get key mset key value [key value ...]mget key [key ...] 同时设置或者获取多个键值对 getrange…...
bugku-web-source
kali中先用dirsearch工具扫描后台目录,然后用wget -r url/.git命令递归下载后,进入txt文件使用git reflog命令然后只用git show查看作者提交flag日志,用git show 一个一个去尝试,很多假的flag git reflog 是一个 Git 命令&#x…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
springboot整合VUE之在线教育管理系统简介
可以学习到的技能 学会常用技术栈的使用 独立开发项目 学会前端的开发流程 学会后端的开发流程 学会数据库的设计 学会前后端接口调用方式 学会多模块之间的关联 学会数据的处理 适用人群 在校学生,小白用户,想学习知识的 有点基础,想要通过项…...
[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】,分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
比较数据迁移后MySQL数据库和OceanBase数据仓库中的表
设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...
