当前位置: 首页 > 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…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Spring Security 认证流程——补充

一、认证流程概述 Spring Security 的认证流程基于 过滤器链&#xff08;Filter Chain&#xff09;&#xff0c;核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤&#xff1a; 用户提交登录请求拦…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

WebRTC调研

WebRTC是什么&#xff0c;为什么&#xff0c;如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...

【若依】框架项目部署笔记

参考【SpringBoot】【Vue】项目部署_no main manifest attribute, in springboot-0.0.1-sn-CSDN博客 多一个redis安装 准备工作&#xff1a; 压缩包下载&#xff1a;http://download.redis.io/releases 1. 上传压缩包&#xff0c;并进入压缩包所在目录&#xff0c;解压到目标…...