当前位置: 首页 > news >正文

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/&quot;Info_&quot;MM-dd-HH&quot;.log&quot;"/><!--日志根据日期滚动--><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/&quot;fault_&quot;MM-dd-HH&quot;.log&quot;"/><!--日志根据日期滚动--><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&#xff0c;日志文件统一保存到项目启动目录下的logs文件夹 2&#xff0c;以天为单位进行日志…...

pytest8.x版本 中文使用文档-------32.示例:使用自定义目录收集器

默认情况下&#xff0c;pytest 使用pytest.Package来收集包含 __init__.py 文件的目录&#xff0c;使用 pytest.Dir来收集其他目录。如果你想要自定义目录的收集方式&#xff0c;你可以编写自己的pytest.Directory 收集器&#xff0c;并使用 pytest_collect_directory钩子来连接…...

c语言第七天笔记

作业题&#xff1a; 设计TVM&#xff08;地铁自动售票机&#xff09;机软件。 输入站数&#xff0c;计算费用&#xff0c;计费规则&#xff0c;6站2元&#xff0c;7-10站3元&#xff0c;11站以上为4元。 输入钱数&#xff0c;计算找零(找零时优先找回面额大的钞票)&#xff0…...

软件测试经理工作日常随记【8】-UI自动化_加密接口的传输

软件测试经理工作日常随记【8】-UI自动化_加密接口的传输 工具类 #utils_api.py class RequestUtils:classmethoddef send_request_splicing(cls, dicts, url): # 对应请求的入参及请求的函数Logger.logger_in().info(-----------------{}接口开始执行-----------------.for…...

基于FPGA的出租车计费系统设计---第一版--郝旭帅电子设计团队

欢迎各位朋友关注“郝旭帅电子设计团队”&#xff0c;本篇为各位朋友介绍基于FPGA的出租车计费系统设计—第一版 功能说明&#xff1a; 收费标准&#xff08;里程&#xff09;&#xff1a;起步价5元&#xff0c;包括三公里&#xff1b;三公里之后&#xff0c;每公里2元&#x…...

商汤联合建工社共同打造“住建领域法规标准知识大模型”

近日&#xff0c;商汤科技与中国建筑出版传媒有限公司&#xff08;下称“建工社”&#xff09;共同发布“住建领域法规标准知识大模型”&#xff0c;共同探索新型知识服务模式。大模型聚焦建筑行业&#xff0c;以商汤“日日新SenseNova 5.5”大模型体系为基础&#xff0c;结合海…...

基于STM32的智能交通监控系统教程

目录 引言环境准备智能交通监控系统基础代码实现&#xff1a;实现智能交通监控系统 车辆检测模块交通流量分析模块通信与网络系统实现用户界面与数据可视化应用场景&#xff1a;交通管理与优化常见问题与解决方案收尾与总结 引言 随着城市化进程的加快&#xff0c;交通拥堵问…...

Git和TortoiseGit的安装与使用

文章目录 前言一、Git安装步骤查看版本信息 二、TortoiseGit安装中文语言包TortoiseGit 配置不同语言 Git基本原理介绍及常用指令 GitLab添加TortoiseGIT生成SSH Key 前言 Git 提供了一种有效的方式来管理项目的版本&#xff0c;协作开发&#xff0c;以及跟踪和应用文件的变化…...

改进YOLOv5:加入非对称卷积块ACNet,加强CNN 的内核骨架,包含VOC对比实验

🔥🔥🔥 提升多尺度、不规则目标检测,创新提升 🔥🔥🔥 🔥🔥🔥 捕捉图像特征和处理复杂图像特征 🔥🔥🔥 👉👉👉: 本专栏包含大量的新设计的创新想法,包含详细的代码和说明,具备有效的创新组合,可以有效应用到改进创新当中 👉👉👉: �…...

论文解读(12)-Transfer Learning

这个也是看论文的时候看到的&#xff0c;但是对这方面不是理解&#xff0c;需要对这方面知识点进行一个补充。 参考&#xff1a; 迁移学习概述&#xff08;Transfer Learning&#xff09;-CSDN博客 1. 什么是Transfer Learning&#xff1f; Transfer Learning就是迁移学习&…...

力扣高频SQL 50题(基础版)第三十八题

文章目录 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题1484.按日期分组销售产品题目说明实现过程准备数据实现方式结果截图总结 力扣高频SQL 50题&#xff08;基础版&#xff09;第三十八题 1484.按日期分组销售产品 题目说明 表 Activities&#xff1a; ---…...

大模型下的视频理解video understanding

数据集 Learning Video Context as Interleaved Multimodal Sequences Motivation&#xff1a; 针对Narrative videos, like movie clips, TV series, etc.&#xff1a;因为比较复杂 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 语言以其出色的速度和性能而闻名,广泛应用于科学计算、机器学…...

深度学习入门——卷积神经网络

本章的主题是卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;。CNN被用于图像识别、语音识别等各种场合&#xff0c;在图像识别的比赛中&#xff0c;基于深度学习的方法几乎都以CNN为基础。本章将详细介绍CNN的结构&#xff0c;并用Python实…...

快团团供货大大团长帮卖团长如何线上结算和支付货款?

一、如何支付结算单&#xff1f; 团长在快团团小程序【我的供货商】—【结算单】—【待支付】中&#xff0c;找到需要支付的结算单&#xff0c;点击【去支付】即可。 当有多笔结算单待支付时&#xff0c;团长可筛选供货商和日期找到需要支付的结算单&#xff0c;点击【去批量…...

vite vue3 Webstorm multiple export width the same name “default“

系统格式不一样&#xff0c;导致代码文件格式冲突导致的&#xff0c;解决方法找到对应的文件&#xff0c;将文件类型切换成LF。...

Transformer预测模型及其Python和MATLAB实现

### 一、背景 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;传统的序列到序列&#xff08;Seq2Seq&#xff09;模型大多依赖于循环神经网络&#xff08;RNN&#xff09;和长短期记忆&#xff08;LSTM&#xff09;网络。这些模型虽然在许多任务中取得了成功&…...

草的渲染理论

Unity引擎提供了基础的terrain工具&#xff0c;可以制作地形&#xff0c;在上面刷树刷草。对于树&#xff0c;Unity是支持带LOD的Prefab&#xff0c;不同距离显示不同细节的模型&#xff0c;效果还不错。对于草&#xff0c;Unity支持两种方式来刷草&#xff0c;一种是Add Grass…...

Redis:十大数据类型

键&#xff08;key&#xff09; 常用命令 1. 字符串&#xff08;String&#xff09; 1.1 基本命令 set key value 如下&#xff1a;设置kv键值对&#xff0c;存货时长为30秒 get key mset key value [key value ...]mget key [key ...] 同时设置或者获取多个键值对 getrange…...

bugku-web-source

kali中先用dirsearch工具扫描后台目录&#xff0c;然后用wget -r url/.git命令递归下载后&#xff0c;进入txt文件使用git reflog命令然后只用git show查看作者提交flag日志&#xff0c;用git show 一个一个去尝试&#xff0c;很多假的flag git reflog 是一个 Git 命令&#x…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...