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

Backend - C# 的日志Lognet4

目录

一、安装 log4net 插件

(一)作用

(二)操作

(三)注意

二、配置

(一)配置AssemblyInfo.cs

 (二)配置log4net.config

1. 创建log4net.config文件(和program.cs同层级)

2. 设置文件属性

3. 其中,文件内容:

三、使用

(一)封装一个类,方便管理

(二)调用

(三)等级Level

四、其他:简单日志

(一)定义日志

(二)调用


一、安装 log4net 插件

(一)作用

        log4net是方便记录日志的驱动插件。

(二)操作

        点击工具栏的“工具” > NuGet套件管理员 > 套件管理器主控台。

        打开控制台后,输入安装命令: 

Install-Package log4net

        安装成功后会提示:

(三)注意

        不同解决方案在使用log4net,都需要各自安装一次。

        查看或勾选安装:点击工具栏的“工具” > NuGet套件管理员 > 管理方案的NuGet套件 > 搜寻插件名 > 查看某项目是否安装。

二、配置

(一)配置AssemblyInfo.cs

<!--添加log4net.dll的参数-->
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "web.config", Watch = true)]

如图所示:

 (二)配置log4net.config

1. 创建log4net.config文件(和program.cs同层级)。

2. 设置文件属性

        右击log4net.config文件 > 属性 > 将“复制到输出目录”设置为“一律复制” 。

3. 其中,文件内容:

<?xml version="1.0" encoding="utf-8" ?>
<configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /></configSections><log4net><!--错误日志类--><logger name="logerror"><!--日志类名字--><level value="ERROR" /><!--日志级别--><appender-ref ref="ErrorAppender" /></logger><logger name="loginfo"><level value="INFO" /><appender-ref ref="InfoAppender" /></logger><!--错误日志附加介质--><appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender"><!--name是名称,type是指定介质类型--><!--路径在exe程序的相对目录下--><param name="File" value="Logs//LogError//" /><!--是否追加到文件(true:不会覆盖之前的信息)--><param name="AppendToFile" value="true" /><!--是否只写到一个文件中--><param name="StaticLogFileName" value="false" /><!--按日期产生文件名--><param name="DatePattern" value='"Errorlog_"yyyyMMdd".txt"'/><!-- 按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite]) --><param name="RollingStyle" value=" Composite " /><!-- 当个日志文件的大小。只在文件大小和混合方式方式下使用, 超出大小后在所有文件名后自动增加正整数重新命名 --><param name="maximumFileSize" value="10MB" /><!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数--><param name="MaxSizeRollBackups" value="8" /><!--记录的格式--><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%n【Time】:%d [%t]     %n【Level】:%-5p     %n【ClassType】:%c [%x]     %n【Message】:%m%n     %n" /></layout></appender><!--普通信息日志附加介质--><appender name="InfoAppender" type="log4net.Appender.RollingFileAppender"><param name="File" value="Logs//LogInfo//" /><param name="AppendToFile" value="true" /><param name="StaticLogFileName" value="false" /><param name="DatePattern" value='"Infolog_"yyyyMMdd".txt"' /><param name="RollingStyle" value="Composite" /><param name="maximumFileSize" value="10MB" /><param name="MaxSizeRollBackups" value="8" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%n【Time】:%d [%t]     %n【Level】:%-5p     %n【ClassType】:%c [%x]     %n【Message】:%m%n     %n" /></layout></appender></log4net><startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /></startup>
</configuration>

其中,红色圈的内容一定要放在configuration里靠前的位置。

三、使用

(一)封装一个类,方便管理

// Logging.cs 文件
using log4net; // 导入
namespace LogSpace
{class LogCls{public static readonly ILog Logerror = LogManager.GetLogger("logerror"); // 初始化public static readonly ILog Loginfo = LogManager.GetLogger("loginfo");public static void ErrorLog(string msg){if (Logerror.IsErrorEnabled) // 调用{Logerror.Error(msg);}}public static void InfoLog(string msg){if (Loginfo.IsInfoEnabled){Loginfo.Info(msg);}}}
}

(二)调用

using LogSpace;
namespace StartExeSpace
{class StartExe{static void Main(){LogCls.ErrorLog("this is an error content"); // 该方法用了static,其所属类不用实例化LogCls.InfoLog("this is an info content");Console.ReadKey();}}
}

(三)等级Level

由高到低:None > Fatal > ERROR > WARN > DEBUG > INFO > All

理解:若等级是ERROR,则就算调用了log4net的info方法,也不会写入到日志文件中。

四、其他:简单日志

以下是不需要插件,生成简单日志的例子

(一)定义日志

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace LogSpace
{class LogCls{public void WriteLog(string msg){//创建日志文件夹string logPath = Directory.GetCurrentDirectory() + "\\logs";if (!Directory.Exists(logPath)){Directory.CreateDirectory(logPath);}//创建日志文件string fname = $"{logPath}\\log_{DateTime.Now.ToString("yyyyMMdd")}.txt";FileInfo finfo = new FileInfo(fname);if (!finfo.Exists){FileStream fs;fs = File.Create(fname);fs.Close();finfo = new FileInfo(fname);}//文件超过10MB则重命名if (finfo.Length < 1024 * 1024 * 10){File.Move($"{logPath}\\log_{DateTime.Now.ToString("yyyyMMdd")}.txt", $"{logPath}\\log_{DateTime.Now.ToString("yyyyMMddHHmmssffff")}.txt");}//记录日志using (FileStream fs = finfo.OpenWrite()){//根据上面创建的文件流,创建写数据流StreamWriter w = new StreamWriter(fs);//设置写数据流的起始位置,为文件流的末尾w.BaseStream.Seek(0, SeekOrigin.End);//写入日志内容w.WriteLine($"Starting Logging【{DateTime.Now}】");w.WriteLine($"{msg}\n");w.WriteLine("------------------------------------\n");//清空缓冲区w.Flush();//关闭写数据流w.Close();}}}
}

(二)调用

static void Main()
{LogCls logcls = new LogCls();logcls.WriteLog("this is a content");Console.ReadKey();
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux下常见压缩文件tar.xz、tar.bz2、tar.gz的区别
  • 跑GCN收敛实验时遇到的Python环境问题
  • 数学建模美赛入门
  • 科研绘图系列:R语言蜜蜂图(Beeswarm Plot)
  • 【Python大语言模型系列】Windows环境下部署Chatglm2-6B-int4大语言模型(完整教程)
  • 通用机器人里程碑!MIT提出策略组合框架PoCo,解决数据源异构难题,实现机器人多任务灵活执行
  • C# + halcon 联合编程示例
  • 图书馆数据仓库
  • 浅谈重要组件JSR223介绍
  • 打造高效的高性能计算大模型训练平台
  • vue2实现复制,粘贴功能,使用vue-clipboard2插件
  • 算术运算符用途解析及应用案例
  • AggregatingMergeTree 物化视图下使用
  • Linux服务器CPU占用率达到100%排查思路
  • 蓝牙人员定位精准吗?是否会对人体有伤害?
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【前端学习】-粗谈选择器
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • gulp 教程
  • JS基础之数据类型、对象、原型、原型链、继承
  • Laravel 实践之路: 数据库迁移与数据填充
  • mysql_config not found
  • PhantomJS 安装
  • PHP CLI应用的调试原理
  • 读懂package.json -- 依赖管理
  • 来,膜拜下android roadmap,强大的执行力
  • 实习面试笔记
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 硬币翻转问题,区间操作
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 阿里云API、SDK和CLI应用实践方案
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (6)添加vue-cookie
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C++)八皇后问题
  • (CPU/GPU)粒子继承贴图颜色发射
  • (HAL库版)freeRTOS移植STMF103
  • (七)Flink Watermark
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (十一)手动添加用户和文件的特殊权限
  • (五)关系数据库标准语言SQL
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
  • (转)程序员技术练级攻略
  • (转)四层和七层负载均衡的区别
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • *p++,*(p++),*++p,(*p)++区别?
  • .apk文件,IIS不支持下载解决
  • .env.development、.env.production、.env.staging
  • .net CHARTING图表控件下载地址