1、下载log4net并添加引用或通过NuGet安装程序包

2、配置文件中添加配置

在配置文件web.config或App.config中的Configuration节点下增加以下配置

<configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/></configSections><log4net><appender name="Console" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><!-- Pattern to output the caller's file name and line number --><conversionPattern value="%5level [%thread] (%file:%line) - %message%newline"/></layout></appender><!--定义输出到文件中--><appender name="RollingFile" type="log4net.Appender.RollingFileAppender"><!--定义文件存放位置--><file value="App_Log\\log"/><!--是否追加到文件--><appendToFile value="true"/><!--记录日志写入文件时,不锁定文本文件,防止多线程时不能写Log,官方说线程非安全--><lockingModel type="log4net.Appender.FileAppender+MinimalLock"/><!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--><maxSizeRollBackups value="-1"/><!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])--><rollingStyle value="Composite"/><datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/><!--是否只写到一个文件中--><staticLogFileName value="false"/><!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志--><maximumFileSize value="100MB"/><!--计数类型为1,2,3…--><param name="CountDirection" value="1"/><layout type="log4net.Layout.PatternLayout"><!--输出格式-样例:记录时间:2022-08-24 17:59:31,172    线程ID:[4]    日志级别:INFO  出错类:Log4NetDemo.MainClass    属性:[UserName:John] 日志描述:创建连接失败。--><conversionPattern value="记录时间:%date    线程ID:[%thread]    日志级别:%-5level %n出错类:%logger    属性:[UserName:%property{UserName}] %n日志描述:%message%newline %n"/></layout></appender><root><!--日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL--><level value="ALL"/><!--<appender-ref ref="Console"/>--><appender-ref ref="RollingFile"/></root></log4net>

3、编写日志写入帮助类

注意,在命名空间上方要加代码:[assembly: log4net.Config.XmlConfigurator(Watch = true)],才能正确读取配置文件中的内容。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;[assembly: log4net.Config.XmlConfigurator(Watch = true)]
namespace Demo.Helper
{/// <summary>/// 日志帮助类/// </summary>public class LogHelper{#region 输出日志到Log4Net/// <summary>/// 输出日志到Log4Net/// </summary>/// <param name="t"></param>/// <param name="ex">异常对象</param>/// <param name="level">日志等级,默认为:1 Debug 级</param>public static void WriteLog(Type t, Exception ex, LogLevel level = LogLevel.DEBUG){WriteLog(t, ex.Message, level);}#endregion#region 输出日志到Log4Net/// <summary>/// 输出日志到Log4Net/// </summary>/// <param name="t"></param>/// <param name="msg">错误信息</param>/// <param name="level">日志等级,默认为:1 Debug 级</param>public static void WriteLog(Type t, string msg, LogLevel level = LogLevel.DEBUG){// 对应日志信息中的“%property{UserName}”//log4net.ThreadContext.Properties["UserName"] = "Test";log4net.ILog log = log4net.LogManager.GetLogger(t);switch (level){// 日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALLcase LogLevel.DEBUG:log.Debug(msg);break;case LogLevel.INFO:log.Info(msg);break;case LogLevel.WARN:log.Warn(msg);break;case LogLevel.ERROR:log.Error(msg);break;case LogLevel.FATAL:log.Fatal(msg);break;default:log.Debug(msg);break;}}#endregion}/// <summary>/// 日志等级:/// OFF > FATAL > ERROR > WARN > INFO > DEBUG  > ALL/// </summary>public enum LogLevel{/// <summary>/// ALL/// </summary>ALL = 0,/// <summary>/// DEBUG/// </summary>DEBUG = 1,/// <summary>/// INFO/// </summary>INFO = 2,/// <summary>/// WARN/// </summary>WARN = 3,/// <summary>/// ERROR/// </summary>ERROR = 4,/// <summary>/// FATAL/// </summary>FATAL = 5,/// <summary>/// OFF/// </summary>OFF = 6}
}

4、通过日志帮助类调用方法写入日志信息

using System;namespace Demo
{static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>static void Main(){LogHelper.WriteLog(typeof(Demo), "输出日志信息。", LogLevel.INFO);}}
}

5、日志样式

记录时间:2022-08-24 17:58:48,881    线程ID:[4]    日志级别:INFO
出错类:Demo    属性:[UserName:John]
日志描述:监听启动中...记录时间:2022-08-24 17:58:48,912    线程ID:[4]    日志级别:DEBUG
出错类:Demo    属性:[UserName:John]
日志描述:创建连接。记录时间:2022-08-24 17:59:10,167    线程ID:[4]    日志级别:ERROR
出错类:Demo    属性:[UserName:John]
日志描述:连接失败。

关于log4net的详细使用教程相关推荐

  1. mysql为什么每天0点就装东西_MySQL的详细安装教程

    1.安装之前需要注意的几点 建议不要安装最新版本,一般找mysql5.0系列版本即可: mysq1官网有.zip和.msi两种安装形式: zip是压缩包,直接解压缩以后使用的,需要自己配置各种东西:m ...

  2. mysql windows 管道连接,科技常识:Windows Server 2016 MySQL数据库安装配置详细安装教程...

    今天小编跟大家讲解下有关Windows Server 2016 MySQL数据库安装配置详细安装教程 ,相信小伙伴们对这个话题应该也很关注吧,小编也收集到了有关Windows Server 2016 ...

  3. python安装了运行不了_python详细安装教程

    本章开始,我们将详细介绍Python编程环境的搭建,工欲善其事必先利其器,所以我们这里先介绍python详细安装教程.由于Python是跨平台的,他可以运行在Windows.Linux.Mac等系统上 ...

  4. truffle详细使用教程

    详细使用教程 选择以太坊客户端 编译智能合约 运行迁移 测试智能合约 用 JavaScript 编写测试脚本 编写 Solidity 测试脚本 与智能合约交互 使用 EthPM 包管理工具 调试智能合 ...

  5. Apache的详细安装教程和遇到的问题解决方案

    Apache的详细安装教程和遇到的问题解决方案 参考文章: (1)Apache的详细安装教程和遇到的问题解决方案 (2)https://www.cnblogs.com/jave1ove/p/54864 ...

  6. centos7 查看ip_VMware安装CentOS 7操作系统详细操作教程(网络配置)

    网络配置,输入vi /etc/sysconfig/network-scripts/,按下Tab键,根据提示,输入ifcfg-eno16777736,按下Enter键,如下图所示: 图 1 网络配置-1 ...

  7. htc one m7刷Linux,HTC one m7官方刷机详细操作教程

    由于很多软件功能都需要手机进行刷机,所以入手HTC one m7新机的用户一定想着如何刷机.下面就来教你HTC one m7官方刷机的详细操作教程! 准备事项: 1.手机必须能用usb数据线电脑,因为 ...

  8. apache mysql 连接数 winnt,APACHE PHP MYSQL PHPMYADMIN超详细配置教程

    Apache+PHP+MySQL+phpMyAdmin超详细配置教程 安装之前需要下载 Apache2.0.59 PHP4.4.4Win32 MySQL4.12 phpMyAdmin2.9.1.1rc ...

  9. python详细教程-python入门(非常详细的教程)

    对于初学者而言,您要做的只是专注于Python语言,阐明学习重点,掌握学习节奏,并逐步学习.根据我多年的学习和工作经验,编程语言的学习分为以下三个步骤,无论您是否具有编程基础,都可以通过比较来完成. ...

最新文章

  1. 使用GIF(仅限Delphi2007)
  2. 《繁凡的论文精读》(一)CVPR 2019 基于决策的高效人脸识别黑盒对抗攻击(清华朱军)
  3. Spring AOP本质(7)
  4. Strtus2工作流程及原理
  5. 利用CSS边框合并属性打造table细边框
  6. 牛客小白月赛——G题
  7. PO、VO、BO、POJO、DAO、DTO都是什么对象
  8. 测试ai模糊软件,“马赛克”视频能被AI软件彻底还原?测试结果出乎意料!
  9. 汽车总线LIN总线协议
  10. [原创]把vscode的快捷键json配置批量导入微信小程序开发工具
  11. 如何在 CSS 中将表格居中?
  12. win7电脑怎么提升开机速度
  13. flash存储器原理及作用是什么?
  14. SHA-512 逻辑
  15. RT-Thread源码-__rt_ffs函数剖析
  16. OCR财务报表识别方案应用
  17. 如何写新产品开发报告书
  18. 使用async批量获取博客链接
  19. 使用Dockerfile创建openoffice镜像
  20. 金融业数字化转型全面提速背后 看华为如何与时俱进

热门文章

  1. 路由器接口配置与管理——1
  2. learn how to learn
  3. Android Studio 模拟器卡慢、占内存解决方法,上岸蚂蚁金服
  4. Python使用递归方法求阶乘
  5. ROM与RAM 的区别
  6. 2022年中国第三方证券APP创新专题分析
  7. bower 基本使用
  8. tensorflow强化学习之打乒乓球(Reinforcement Learning)
  9. 织梦采集插件自动采集文章主动推送给搜索引擎
  10. 点石互动--精彩文章收录