C# log4net 日志输出超详细

article/2025/9/29 16:48:40

思路:
1.安装插件:安装log4net
2.使用配置:添加log4net配置信息
3.输出日志文件格式:添加日志配置
4.AssemblyInfo.cs中配置

第一步:安装log4net

在这里插入图片描述
在这里插入图片描述

第二步:在app.config添加log4net配置

新增log4net.config配置文件,内容如下,与Program.cs同一目录即可。

 	<configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/></configSections><log4net><!--level取值:OFF FATAL ERROR WARN INFO DEBUG ALL --><logger name="loginfo"><level value="ALL"/><appender-ref ref="InfoAppender"/></logger><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"><!--定义文件存放位置--><param name="File" value="OneCardConsumeLog\"/><!--不以独占方式记录日志,仅在记录每个日志的最短时间内锁定,因为部署到服务器上遇到了文件被占用无法下载日志--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><param name="AppendToFile" value="true"/><param name="MaxFileSize" value="10240"/><param name="StaticLogFileName" value="false"/><param name="DatePattern" value="yyyy-MM-dd&quot;.txt&quot;"/><param name="RollingStyle" value="Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%d [%p] - %m%n"/></layout></appender></log4net>

第三步:添加日志配置

在文件Program.cs应用程序主入口加入:
LogUtils.SetConfig();
在这里插入图片描述

LogUtils.cs 写入日志公共类

class LogUtils
{private static readonly ILog loginfo = LogManager.GetLogger("loginfo");/// <summary>/// 从缺省配置文件获取日志配置/// </summary>public static void SetConfig(){XmlConfigurator.Configure();}/// <summary>/// 从指定配置文件获取日志配置/// </summary>/// <param name="configFile">指定的配置文件</param>public static void SetConfig(FileInfo configFile){XmlConfigurator.Configure(configFile);}/// <summary>/// 生成分类日志/// </summary>/// <param name="info">日志信息</param>/// <param name="dirName">保存目录名,形如d:\log\aaa</param>private static void WriteSortLog(string info, string dirName){try{if (false == System.IO.Directory.Exists(dirName)){System.IO.Directory.CreateDirectory(dirName);}string path = dirName + "\\" + DateTime.Now.ToString("yyyyMMdd") + ".txt";StreamWriter sw = new StreamWriter(path, true, System.Text.Encoding.Default);sw.WriteLine(DateTime.Now.ToString("HH:mm:ss: ") + info);sw.Close();}catch (Exception ex){string expMsg = "WriteSortLog异常:" + ex.Message + Environment.NewLine + ex.StackTrace;if (ex.InnerException != null)expMsg += Environment.NewLine + "InnerException:" + ex.InnerException.Message;Error(expMsg, ex);}}/// <summary>/// Info级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Info(string info){if (loginfo.IsInfoEnabled){loginfo.Info(info);}}/// <summary>/// Info 先生成常规日志,然后在指定目录另外创建一份日志/// 主要用来需要对日志进行分类时使用/// </summary>/// <param name="info"></param>/// <param name="dirName"></param>public static void Info(string info, string dirName){if (loginfo.IsInfoEnabled){//生成常规日志loginfo.Info(info);//生成分类日志WriteSortLog(info, dirName);}}/// <summary>/// Debug级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Debug(string info){if (loginfo.IsDebugEnabled){loginfo.Debug(info);}}/// <summary>/// Debug级 异常日志/// </summary>/// <param name="info">日志信息</param>/// <param name="exp">异常信息</param>public static void Debug(string info, Exception exp){if (loginfo.IsDebugEnabled){loginfo.Debug(info, exp);}}/// <summary>/// Error级 常规的日志/// </summary>/// <param name="info">日志信息</param>public static void Error(string info){if (loginfo.IsErrorEnabled){loginfo.Error(info);}}/// <summary>/// Error 异常日志/// </summary>/// <param name="info">日志信息</param>/// <param name="exp">异常信息</param>public static void Error(string info, Exception exp){if (loginfo.IsErrorEnabled){loginfo.Error(info, exp);}}/// <summary>/// Fatal级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Fatal(string info){if (loginfo.IsFatalEnabled){loginfo.Fatal(info);}}/// <summary>/// Fatal级 异常日志/// </summary>/// <param name="info">日志信息</param>/// <param name="exp">异常信息</param>public static void Fatal(string info, Exception exp){if (loginfo.IsFatalEnabled){loginfo.Fatal(info, exp);}}/// <summary>/// Warn级 常规日志/// </summary>/// <param name="info">日志信息</param>public static void Warn(string info){if (loginfo.IsWarnEnabled){loginfo.Warn(info);}}/// <summary>/// Warn级 异常日志/// </summary>/// <param name="info">日志</param>/// <param name="exp">异常信息</param>public static void Warn(string info, Exception exp){if (loginfo.IsWarnEnabled){loginfo.Warn(info, exp);}}
}

第四步:AssemblyInfo.cs中配置 Watch = true

在项目Properties文件夹下AssemblyInfo.cs中加入:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

在这里插入图片描述
最后通过
LogUtils.Error(“错误日志”);
LogUtils.Info(“正常输出日志”);
LogUtils.Warn(“温馨提示日志”);

最后启动项目:会在项目debug目录下输出日志文件夹log内


http://chatgpt.dhexx.cn/article/uCmPWmxs.shtml

相关文章

.Net Core3.1 集成Log4net

准备 第一步&#xff1a;nuget 引用 Microsoft.Extensions.Logging.Log4Net.AspNetCore 第二步&#xff1a;在项目中添加log4net.config的配置文件(配置文件在文末) 第三步&#xff1a;在项目中注册使用log4net 方法一&#xff1a;在Program.cs中注册&#xff0c;找到 Prog…

C#上位机开发(十三)—— 使用Log4net添加日志记录功能

一、Log4net 官方网站:https://logging.apache.org/log4net/。 下载二进制dll库: 包中提供了针对各个版本的dll库: 二、使用日志库 1. 添加库 复制对应的库文件到项目中: 2. 配置log4net 2.1. 创建配置文件 添加后修改该文件设置:

unity log4net

log4.et.confog.xml <?xml version"1.0" encoding"utf-8" ?><log4net> <appender name"Error" type"log4net.Appender.RollingFileAppender"> <lockingModel type"log4net.Appender.FileAppenderMinimal…

C#-Winform之log4net使用详细记录

一、作用 提供一个记录日志的框架&#xff0c;可以将日志信息记录到文件、控制台、Windows事件日志和数据库&#xff08;MSSQL、Acess、Oracle、DB2和SQLite等&#xff09;。 二、操作步骤 1.在项目中添加对log4net.dll的引用&#xff08;通过NuGet可以直接安装&#xff09; …

log4net在linux中不生成日志,log4net使用记录

1、在程序中引用log4net.dll 2、添加-新建配置文件Log4Net.config&#xff0c;并在文件属性中“复制到输出目录”选中“始终复制”&#xff0c;文件内容如下&#xff1a; 3、在AssemblyInfo.cs中添加代码&#xff0c;用于调用Log4Net.config&#xff1a; [assembly: log4net.Co…

log4net在.Net Core使用

log4net的使用&#xff0c;可以把日志信息输出到各种不同终端&#xff08;文本文件、数据库、windows日志等&#xff09;&#xff0c;实现过程主要是各种输出方式的配置文件怎样配置&#xff1a; 1.安装log4net包 如果需要输出到数据库&#xff0c;相应的引入包 注意&#xf…

C#log4net的使用教程

1.我们在工具层使用NuGet添加log4net引用包 2.添加LogHelper帮助类 public class LogHelper{private static ILog _lognet LogManager.GetLogger(typeof(LogHelper));public static void WriterErrorLog(string logMessage) {_lognet.Error(logMessage);}public static void W…

C# log4net日志库的简单使用

C# log4net日志库的简单使用 一、简述 记--log4net日志开源库的简单使用&#xff1a;控制日志文件大小&#xff0c;日志文件个数&#xff0c;滚动式覆盖&#xff0c;自由控制日志打印等级 例子打包&#xff1a;外链:https://wwa.lanzoui.com/b0c9qvfqf 密码:67y7 二、下载log…

关于log4net的详细使用教程

1、下载log4net并添加引用或通过NuGet安装程序包 2、配置文件中添加配置 在配置文件web.config或App.config中的Configuration节点下增加以下配置 <configSections><section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler, …

.Net使用log4net

1.使用Nuget下载log4net 2.、新建Config文件夹&#xff0c;将log4net配置文件放入此文件夹中&#xff08;当修改web.config的时候会重启网站&#xff0c;所以把log4net单独出来比较好&#xff0c;也好管理&#xff09;&#xff0c;log4net配置&#xff1a; <?xml version…

Log4Net 使用方法

第一步&#xff1a;安装nuget log4net包 第二步&#xff1a;新建log4net.config配置文件&#xff0c;配置日志输出格式 <?xml version"1.0"?> <configuration><configSections><section name"log4net" type"log4net.Config.L…

完整Log4Net配置信息,详细注释

<?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"log4net" type"log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-1.0"/></configSections>&l…

Log4Net 详解

1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目&#xff0c;它是Log4j 的一个克隆版。我们可以控制日志信息的输出目的地。Log4net中定义了多种日志信息输出模式。它可以根据需要将日志输出到控制台&#xff0c;文本文件&#xff…

第一节:框架前期准备篇之Log4Net日志详解

一. Log4Net简介 Log4net是从Java中的Log4j迁移过来的一个.Net版的开源日志框架&#xff0c;它的功能很强大&#xff0c;可以将日志分为不同的等级&#xff0c;以不同的格式输出到不同的存储介质中&#xff0c;比如&#xff1a;数据库、txt文件、内存缓冲区、邮件、控制台、ANS…

Log4net详细教程

Log4net详细教程 一、Log4net概述log4net主要几个方法&#xff1a; 二、配置教程1、配置文件详解2、程序配置文件3、日志帮助类的编写 一、Log4net概述 log4net 是从 java 下有卓越表现的 log4j 移植过来的&#xff0c;是一个能够将日志信息输出到各种 不同目标的.net 类库&am…

Log4Net详解

Log4Net详解 零、文章目录 一、Log4Net详解 1、功能概述 &#xff08;1&#xff09;概述 Log4net库是.Net下一个非常优秀的开源日志记录组件&#xff0c;是一个帮助程序员将日志信息输出到各种目标&#xff08;控制台、文件、数据库等&#xff09;的工具。如果应用程序出现…

C#【必备技能篇】log4net的使用

使用log4net大致分以下几步&#xff1a; 1.安装 log4net&#xff0c;通过 Nuget 下载&#xff08;或者有log4net.dll的话&#xff0c;直接引用即可&#xff09; 2.新建 log4net.config 配置文件 <?xml version"1.0" encoding"utf-8" ?> <con…

Oracle存储过程的简单举例

一、建立测试数据 --建立测试数据: create table person(编号 number(10),姓名 varchar2(20),密码 varchar2(20));insert into person values(1,xzw,888);select * from person; 查询结果如下&#xff1a; 二、建立存储过程 --建立存储过程: create or replace procedure qu…

Mysql 存储过程案例教程

关注微信公共号&#xff1a;小程在线 关注CSDN博客&#xff1a;程志伟的博客 一、无参数无返回值存储过程 DELIMITER表示自定义结束符号&#xff0c;SQL一般默认&#xff1b;为结束符号 红色部分为固定格式 下面的查询语句&#xff0c;可以改成任意复杂的SQL语句 DELIMITE…

Oracle存储过程入门教程(通俗理解存储过程)

Oracle存储过程入门通俗介绍 一、118个真实应用场景的Oracle存储过程案例及开发指南二、存储过程通俗理解三、创建存储过程基本语法(汇总)四、执行存储过程的方式&#xff08;5种&#xff09;五、网上现有的创建存储过程的两种方式解释&#xff08;看注释&#xff09;六、一些存…