首页 > 编程语言 >C#下log4net日志记录使用实例完整教程

C#下log4net日志记录使用实例完整教程

时间:2023-09-04 18:44:57浏览次数:39  
标签:log4net 配置文件 1.3 C# 源码 using 日志

C#下log4net日志记录使用实例完整教程
1 log4net
  1.1 log4net简介
  1.2 log4net源码下载
  1.3 log4net源码编译
    1.3.1 编译工具
    1.3.2 编译步骤
      1.3.2.1 解压log4net源码apache-log4net-source-2.0.10.zip
      1.3.2.2 找到文件“……\log4net解压目录\src\log4net.sln”
      1.3.2.3 Visual Studio打开“log4net.sln”
      1.3.2.4 Visual Studio中设置工程等细节
2 log4net的配置
  2.1、工程中添加引用
  2.2、工程中创建配置文件“log4net.config”
  2.3、配置文件“AssemblyInfo.cs”中添加配置信息
3 log4net的使用
  3.1、主程序入口日志配置
  3.2、使用日志

本教程基于C#编程语言,借助Visual Studio工具,通过编译log4net源码后,进一步详细进行log4net进行日志记录教程。通过本教程,你将掌握使用C#的log4net进行日志记录。
1 log4net
1.1 log4net简介
log4net的官网:http://logging.apache.org/log4net/index.html

log4net库是一个工具,可帮助程序员将日志语句输出到各种输出目标。log4net是优秀的Apache log4j™框架到Microsoft®.NET运行时的移植。我们利用.NET运行时中的新功能,使该框架在本质上与原始log4j相似。
log4net是帮助程序员将日志语句输出到各种输出目标的工具。如果应用程序出现问题,启用日志记录将很有帮助,以便可以定位问题。使用log4net,可以在运行时启用日志记录,而无需修改应用程序二进制文件。log4net软件包的设计目的是使日志语句可以保留在附带的代码中,而不会产生较高的性能成本。因此,日志记录(或不是日志记录)的速度至关重要。
同时,日志输出量如此之大,以至于很快变得不堪重负。log4net的独特功能之一是分层记录器的概念。使用这些记录器,可以有选择地控制以任意粒度输出的日志语句。

1.2 log4net源码下载
log4net源码下载地址:http://logging.apache.org/log4net/download_log4net.html

本教程使用的版本是:log4net 2.0.10
若不想在官网下载,可以直接在本人博客上进行下载,下载地址为:apache-log4net-source-2.0.10.zip

1.3 log4net源码编译
1.3.1 编译工具
使用Visual Studio进行编译,具体版本为:Visual Studio2019。

1.3.2 编译步骤
1.3.2.1 解压log4net源码apache-log4net-source-2.0.10.zip


1.3.2.2 找到文件“……\log4net解压目录\src\log4net.sln”


1.3.2.3 Visual Studio打开“log4net.sln”


1.3.2.4 Visual Studio中设置工程等细节
本案例编译release下的log4net,具体设置如下:
(1)选择菜单中的“配置管理器”菜单;
(2)选择“活动解决方案配置”为“Release”;
(3)选择“活动解决方案平台”为“Any CPU”;
(4)针对项目“log4net”的“配置”选项为“Release”;
(5)针对项目“log4net”的“平台”选项为“Any CPU”;
(6)针对项目“log4net”,勾选“生成”按钮。


2 log4net的配置
2.1、工程中添加引用
工程中添加log4net.dll的引用,具体步骤如下:
目标解决方案->目标工程->引用->添加引用->浏览->浏览,选择目标文件(log4net.dll)后点击确定即可。


2.1、工程中创建配置文件“log4net.config”
在工程中创建配置文件“log4net.config”,配置文件“log4net.config”内容具体如下:

配置文件“log4net.config”可在下面地址进行下载:https://download.csdn.net/download/Zhangyanfeng1/13679438

2.2、配置文件“AssemblyInfo.cs”中添加配置信息
在工程的配置文件中添加配置信息,具体如下:
目标解决方案->目标工程->Properties->AssemblyInfo.cs,添加如下信息:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
1


3 log4net的使用
3.1、主程序入口日志配置
使用日志前进行日志配置,具体如下:
1、引用命名空间:using log4net;//使用log4net
2、配置日志:log4net.Config.XmlConfigurator.Configure();

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Windows.Forms;
 5 using System.Threading;
 6 using log4net;//使用log4net
 7 
 8 namespace ZYF
 9 {
10     static class Program
11     {
12         /// <summary>
13         /// 应用程序的主入口点。
14         /// </summary>
15         [STAThread]
16         static void Main(string[] args)
17         {
18             Application.EnableVisualStyles();
19             Application.SetCompatibleTextRenderingDefault(false);
20 
21             //配置日志
22             log4net.Config.XmlConfigurator.Configure();
23 
24             Application.Run(new ViewForm());
25         }
26     }
27 }

 

3.2、使用日志
在使用日志时,先引用命名空间:using log4net;//使用log4net,然后开始使用日志,例如:

 1 using System;
 2 using log4net;//使用log4net
 3 //省略若干行代码
 4 
 5 namespace ZYF
 6 {
 7     public partial class ViewForm : Form
 8     {
 9         /// <summary>
10         /// log4net日志使用dmeo
11         /// </summary>
12         public void Demo_log4net()
13         {
14             ILog logFuntion = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
15             logFuntion.Debug("我是日志Debug1");
16             logFuntion.Error("我是日志Error2");
17             logFuntion.Fatal("我是日志Fatal3");
18             logFuntion.Info("我是日志Info4");
19             logFuntion.Warn("我是日志Warn5");
20         }
21 
22         public ViewForm()
23         {
24             Demo_log4net();
25             InitializeComponent();
26         
27         //省略若干行代码
28       }        
29     }
30 }

日志使用效果如下:

 

20201213162704609.png (1367×173)

 

————————————————
本文转载自CSDN博主「Zhangyanfeng1」原文链接:https://blog.csdn.net/Zhangyanfeng1/article/details/109212170

标签:log4net,配置文件,1.3,C#,源码,using,日志
From: https://www.cnblogs.com/soliang/p/17677814.html

相关文章

  • 神策数据 CJO 系列丨解密 CJO:连接体验的下一个前沿趋势
    10余年前,市场营销的焦点聚集在增长黑客如何利用AARRR模型(获取Acquisition、激活Activation、留存Retention、收入Revenue、传播Referral)来推动并加速企业的生长发展。我们曾相信,在AARRR漏斗中,只要我们吸引了足够的目光,就能实现令人满意的转化。然而,如今我们身处一个触点......
  • ChatGLM2 源码解析:`ChatGLMModel`
    #完整的GLM模型,包括嵌入层、编码器、输出层classChatGLMModel(ChatGLMPreTrainedModel):def__init__(self,config:ChatGLMConfig,device=None,empty_init=True):super().__init__(config)#如果设置了`empty_init`,创建任何PyTorch模块时,不初......
  • ChatGLM2 源码解析:`ChatGLMForConditionalGeneration.forward`
    classChatGLMForConditionalGeneration(ChatGLMPreTrainedModel):def__init__(self,config:ChatGLMConfig,empty_init=True,device=None):super().__init__(config)self.max_sequence_length=config.max_lengthself.transformer=C......
  • 无涯教程-JavaScript - DCOUNTA函数
    描述DCOUNTA函数返回列表或数据库中符合您指定条件的列中非空白单元格的计数。此函数与DCOUNT函数相似,不同之处在于DCOUNTA函数对所有非空白单元进行计数。DCOUNT函数仅计算包含数值的单元格。语法DCOUNTA(database,field,criteria)争论Argument描述Required/Opti......
  • The colossus
    BYSYLVIAPLATHIshallnevergetyouputtogetherentirely,Pieced,glued,andproperlyjointed.Mule-bray,pig-gruntandbawdycacklesProtectedfromyourgreatlips.It'sworsethanabarnyardPehapsyouconsideryourselfanoracle,Mouthpiecep......
  • 关于synchronized
    关于synchronizedsynchronized是java中的关键字,可以在需要线程安全的业务场景中进行使用,保证线程安全,它是利用锁机制来实现同步的。synchronized锁对象和锁类对象锁:每个实例都会有一个monitor对象,即Java对象的锁,类的对象可以有多个,所以每个对象有其独立的对象锁,互不干扰......
  • [个人笔记][C#]反射和特性学习笔记
    反射通过Type类型的实例来访问类型的元数据通过obj.GetType()或typeof()获取一个Type类型的实例在Type类型的实例上通过GetProperties(),GetMethods(),GetCustomAttributes()访问类型的各种东西GetType()只能在实例上调用,typeof()给一个类型名就行,它是在编译时求值的验证一个......
  • win2016系统php7.4安装oracle oci8扩展
    查看php版本,判断操作系统是否64位;phpinfo();判断PHP是否TS查看ThreadSafety的值,如果是disabled就是NTS,否则是TS,下载的时候要区分;下载扩展oci82.2.0forWindows:https://pecl.php.net/package/oci8/2.2.0/windows下载并解压,把php_oci8.dll,php_oci8_11g.dll,php_oci8_12c......
  • 配置iSCSI存储
    【更新】【WindowsServer2019】存储服务器的配置和管理——iSCSI的安装和配置(上)_windows搭建iscsi服务器_NOWSHUT的博客-CSDN博客【WindowsServer2019】存储服务器的配置和管理——iSCSI的安装和配置(下)_win10搭建iscsi服务端_NOWSHUT的博客-CSDN博客......
  • ChatGLM2 源码解析:`GLMTransformer`
    #编码器模块,包含所有GLM块classGLMTransformer(torch.nn.Module):"""Transformerclass."""def__init__(self,config:ChatGLMConfig,device=None):super(GLMTransformer,self).__init__()self.fp32_residual_co......