c#使用log4Net配置日志文件

news/2025/1/26 13:31:37/

1.# 写一个通用类 LogHelper

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;namespace WindowsFormsApplication22
{public class LogHelper{static ILog mylog = LogManager.GetLogger(typeof(LogManager));//创建列表,存储日志信息public static List<Record> fatal_list = new List<Record>();public static List<Record> error_list = new List<Record>();public static List<Record> info_list = new List<Record>();public static List<Record> debug_list = new List<Record>();public static List<Record> warning_list = new List<Record>();//报警等级分5 个public static void WriteFitle(object obj){mylog.Fatal(obj);fatal_list.Add(new Record() { Id=fatal_list.Count+1,Name=obj.ToString(),datatime=DateTime.Now});}public static void WriteError(object obj){mylog.Error(obj);error_list.Add(new Record() { Id = error_list.Count, Name = obj.ToString(), datatime = DateTime.Now });}public static void WriteInfo(object obj){mylog.Info(obj);info_list.Add(new Record() { Id = info_list.Count, Name = obj.ToString(), datatime = DateTime.Now });}public static void WriteDebug(object obj){mylog.Debug(obj);debug_list.Add(new Record() { Id=debug_list.Count,Name=obj.ToString(),datatime=DateTime.Now});}public static void WriteWarning(object obj){mylog.Warn(obj);warning_list.Add(new Record() { Id = warning_list.Count, Name = obj.ToString(), datatime = DateTime.Now });}}public class Record{public int Id { get; set; }public string Name { get; set; }public DateTime datatime { get; set; }}
}

2.配置文件信息 App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /></configSections><log4net><root><level value="DEBUG" /><appender-ref ref="RollingFileAppender" /></root><appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"><file type="log4net.Util.PatternString"  value="Logs\%date{yyyy--MM--dd}.log"/><appendToFile value="true" /><maximumFileSize value="5KB"></maximumFileSize><maxSizeRollBackups values="5"></maxSizeRollBackups><layout type="log4net.Layout.PatternLayout"><conversionPattern value="日志时间:  %date    线程:[%thread]     日志级别:%-5level      记录信息: %message%newline" /></layout></appender></log4net><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /></startup>
</configuration>

3界面测试 ,首先加载界面配置文件:

  log4net.Config.XmlConfigurator.Configure(); //加载配置文件
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApplication22
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){log4net.Config.XmlConfigurator.Configure(); //加载配置文件LogHelper.WriteFitle("致命错误1");LogHelper.WriteFitle("致命错误2");LogHelper.WriteFitle("致命错误3");LogHelper.WriteFitle("致命错误4");LogHelper.WriteFitle("致命错误5");LogHelper.WriteInfo("普通一条信息1");LogHelper.WriteInfo("普通一条信息2");LogHelper.WriteInfo("普通一条信息3");LogHelper.WriteError("错误信息1");LogHelper.WriteError("错误信息2");LogHelper.WriteError("错误信息3");LogHelper.WriteError("错误信息3");LogHelper.WriteDebug("Debug 输出1");LogHelper.WriteDebug("Debug 输出2");LogHelper.WriteDebug("Debug 输出3");LogHelper.WriteWarning("提示信息1");LogHelper.WriteWarning("提示信息2");LogHelper.WriteWarning("提示信息3");LogHelper.WriteWarning("提示信息4");}private void buttonDebug_Click(object sender, EventArgs e){this.dataGridView1.DataSource = LogHelper.debug_list;}private void buttonWarning_Click(object sender, EventArgs e){this.dataGridView1.DataSource = LogHelper.warning_list;}private void buttonInfo_Click(object sender, EventArgs e){this.dataGridView1.DataSource = LogHelper.info_list;}private void buttonFatals_Click(object sender, EventArgs e){this.dataGridView1.DataSource = LogHelper.fatal_list;}}
}

运行效果:


http://www.ppmy.cn/news/1566318.html

相关文章

Jenkins上生成的allure report打不开怎么处理

目录 问题背景&#xff1a; 原因&#xff1a; 解决方案&#xff1a; Jenkins上修改配置 通过Groovy脚本在Script Console中设置和修改系统属性 步骤 验证是否清空成功 进一步的定制 也可以使用Nginx去解决 使用逆向代理服务器Nginx&#xff1a; 通过合理调整CSP配置&a…

【Java实现 通过Easy Excel完成对excel文本数据的读写】

Java实现 通过Easy Excel完成对excel文本数据的读写 EasyExcel 官网概述1. 准备工作1.1 添加依赖1.2 创建模型类1.3 最简单的读的监听器&#xff08;参考官网&#xff09; 2. 读取Excel文件2.1 核心原理2.2 基础读取2.3 读多个sheet2.4 错误处理 3. 写入Excel文件3.1 基础写入 …

WebSocket知识点笔记(一)

WebSocket ​ WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务端之间的消息传递更加高效&#xff0c;允许服务器主动向客户端推送数据。 一.WebSocket全双工通信 WebSocket提供了真正的双向通信&#xff0c;客户端和服务端可以同时发送和接收消息 …

斯坦福:LLM混合量化方法BlockDialect

&#x1f4d6;标题&#xff1a;BlockDialect: Block-wise Fine-grained Mixed Format for Energy-Efficient LLM Inference &#x1f310;来源&#xff1a;arXiv, 2501.01144 &#x1f31f;摘要 &#x1f538;大型语言模型&#xff08;LLM&#xff09;已经取得了显著的成功&a…

【28】Word:石油化工设备技术❗

目录 题目 NO1.2 NO3 NO4 题目 NO1.2 F12&#xff1a;另存为将“Word素材.docx”文件另存为“Word. docx”&#xff08;“docx”为文件扩展名&#xff09; 光标来到表格上方→插入→形状→新建画布→单击选中→格式→高度/宽度&#xff08;格式→大小对话框→取消勾选✔锁定…

数论问题68

命题1&#xff0c;证明:方程 1/x1/y1/z1/2024 只有有限多个自然数解。 证:设x&#xff0c;y&#xff0c;z∈N满足方程&#xff0c;x≤y≤z&#xff0c;则0<1/z≤1/y≤1//x。所以 1/z<1/x1/y1/z1/2024≤3/x 由此得&#xff0c;2024<x≤2*2024。因此&#xff0c;x取值至…

图形化数据报文转换映射工具

目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代&#xff0c;数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛&#xff0c;格式多样&#xff0c;常见的数据格式包括XML&#xff08;可扩展标记语言&#xff09;和JSON&a…

【Axure高保真原型】商场流量大屏可视化分析案例

今天和大家分享商场流量大屏可视化分析案例的原型模板&#xff0c;包括游客画像分析、累计客流量分析、重点指标分析、时间-客流量分析、客流量分布分析、停留时长分析等&#xff0c;通过多种可视化图表展示分析结果&#xff0c;具体效果可以点击下方视频观看或打开下方预览地址…