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

C# 利用log4net 工作台打印和保存到文件

目录

    • ‌log4net‌简介
    • 引言
    • 1、添加引用库
    • 2、添加引用和构建实例
    • 3、添加属性配置
    • 4、添加配置文件
    • 最后

‌log4net‌简介

log4net‌是一个开源的日志记录组件,专为.NET平台设计。它是Apache log4j框架在Microsoft .NET平台的实现,属于Apache Logging Services工程的一部分。log4net提供了一种灵活的方式来记录应用程序中的事件和异常信息,支持将日志输出到多种目标,如控制台、文件、数据库等‌。
log4net具有多目标输出 、支持多种日志级别 、配置灵活性高‌ 、日志架构分层等诸多特点。log4net不仅继承了log4j的优秀特性,还针对.NET平台进行了优化和扩展‌。 log4net适用于各种需要日志记录的场景,特别是在开发调试、错误跟踪和性能监控等方面。通过灵活的配置和强大的功能,log4net能够帮助开发者更好地管理和分析应用程序的运行情况,及时发现并解决问题‌。

引言

我们Windows程序员debug时大概率通不过两种方式一种编译器的控制台打印,一种记录到系统log文件中,这里我们举例说明如何最简单地配置 ‌log4net‌,以达到我们使用的基础要求,即打印到工作台的同时保存到工程文件路径下的logs文件夹中,文件以。接下来讲讲4个简单步骤:

1、添加引用库

首先,在工具菜单中的NuGet 包管理器的管理解决方案–>NuGet程序包中打开界面。然后,搜索 ‌log4net‌,找到对应库,进行安装。如下图所示。安装后可以在引用中找到 ‌log4net‌项。

在这里插入图片描述

在这里插入图片描述

2、添加引用和构建实例

可以单独构建类也可以直接在主类中添加构建成,参看下面代码实例。
需要的地方直接调用Log2Debug()即可。

using log4net;
namespace TestLog
{public partial class Form_main : Form{//log4net构建ILog实例private static ILog logger = LogManager.GetLogger(typeof(Form_main));/// <summary>/// log4net 打印到文件和工作台输出/// </summary>/// <param name="msg"></param>public static void Log2Debug(string msg){if (logger.IsDebugEnabled){logger.Debug(msg);}}/// <summary>///  Console.WriteLine只打印到工作台/// </summary>/// <param name="data"></param>private void PRINT(string data){Console.WriteLine(data);}}
}

3、添加属性配置

在属性文件AssemblyInfo.cs中的最后一行添加组件配置

// 指定log4net 的配置文件
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = true)]

4、添加配置文件

在项目文件中添加配置文件log4net.config,并添加内容。
在这里插入图片描述

<?xml version="1.0" encoding="utf-8" ?>
<configuration><log4net><!-- 控制台日志配置 --><appender name="Console" type="log4net.Appender.ConsoleAppender"><!-- 日志输出格式 --><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" /></layout></appender><!--其中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/"/><!--多线程时采用最小锁定--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--是否是向文件中追加日志--><param name= "AppendToFile" value= "true"/><!--log保留天数--><!--<param name= "MaxSizeRollBackups" value= "10"/>--><!--日志文件名是否是固定不变的--><param name= "StaticLogFileName" value= "false"/><!--日志文件名格式为:2022-05-22.log--><param name= "DatePattern" value= "yyyy-MM-dd'.log'"/><!--日志根据日期滚动--><param name= "RollingStyle" value= "Date"/><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%n%d [%t] %-5p %c [%L] - %m %n" /></layout></appender><root><level value="ALL" /><appender-ref ref="Console" /><appender-ref ref="RollingLogFileAppender" /></root></log4net>
</configuration>

最后

log4net配置很多,你可以纠结其细节,配置后调用即可,同学们用起来吧!

http://www.xdnf.cn/news/169075.html

相关文章:

  • 央视两次采访报道爱藏评级,聚焦生肖钞市场升温,评级币成交易安全“定心丸”
  • C# 类的基本概念(类成员)
  • 16bit 高精度低延时霍尔角度编码器,KTH7824,替代MA730
  • 高自由度与多功能指尖设计:Allegro灵巧手V5(4F Plus)的技术亮点
  • 电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据
  • 榕壹云国际版短剧系统:基于Spring Boot+MySQL+UniApp的全球短剧创作平台
  • Scala 函数柯里化及闭包
  • 用 Nodemon 解决 npm run serve 频繁重启服务
  • 2个小时1.5w字| React Golang 全栈微服务实战
  • 双目RealSense系统配置rs_camera.launch----实现D435i自制rosbag数据集到离线场景的slam建图
  • BP 算法探秘 :神经网络的幕后引擎
  • OceanBase TPCC测试常见报错汇总
  • 游戏引擎学习第248天:清理数据块显示
  • 第11章 安全网络架构和组件(一)
  • python 3.14 暂不支持 pyside6 ? python 窗体无法显示!
  • 线性代数—向量与矩阵的范数(Norm)
  • 一、linux系统启动过程操作记录
  • 「Docker已死?」:基于Wasm容器的新型交付体系如何颠覆十二因素应用宣言
  • 部署mongodb三幅本集群
  • [Vulfocus解题系列]Apache HugeGraph JWT Token硬编码导致权限绕过(CVE-2024-43441)
  • RagFlow文档切块提升
  • 光敏材料与智能传感技术的能源系统创新研究
  • R语言操作n
  • SpringBoot自动装配
  • pytorch搭建并训练神经网络
  • C++ 基于多设计模式下的同步异步⽇志系统-2项目实现
  • 【网络原理】从零开始深入理解TCP的各项特性和机制.(二)
  • git回退commit
  • 如何打包一个QT 程序
  • rockermq多线程消费者配置