超轻量级的c#版基于文件的日志记录工具,可定制输出格式,可指定日志文件
这是我自己个人编写的日志记录,主要使用在只需要记录日志,偶尔到文件中查看一下日志记录的情况。我自己写的一些服务之类的是使用了这个的,代码很少,使用很简单。
第一步 搜索和安装我的Nuget包
搜索和安装zmjtool这个包,我写的,如下图:

第二步 引入namespace和创建logger对象
1 /**引入命名空间*/
2 using ZmjTool;
3
4 /**创建对象和使用log功能*/
5 var log = DefaultFileLogger.Create("你的日志文件路径");
6 log.LogMessage("一般信息");
7 log.LogWarning("警告信息");
8 log.LogError(new Exception("错误信息"));
第三步 读取旧的日志(非必须)
/**读取日志内容*/
1 var log = DefaultFileLogger.Create("要读取的日志文件");
2 log.ReloadLogs();
3 foreach(var l in log.LogLines){
4 var tm = l.HTime;//日志行的记录时间
5 var lv = l.CLevel;//日志的记录级别
6 var cnt = l.Content;//日志的文字内容
7 }
第四步 进阶用法(非必须)
1 /**自定义log文件的等级*/
2 public enum MyLevel : int
3 {
4 level1, level2, level3, level4, level5
5 }
6
7 /**需要一个反序列化时用到的正则表达式*/
8 public static Regex DefFileLogRegex = new Regex(@"^(.*?): \[(.*?)\] : (.*?)$", RegexOptions.IgnoreCase | RegexOptions.Compiled);
9
10 /**创建log对象,指定文件名,指定三种等级,指定最终输出log行的格式方法,以及日志行的反序列化方法*/
11 var log = new FileLogger<MyLevel>("你的文件路径", MyLevel.level1, MyLevel.level3, MyLevel.level5,l => $"{l.HTime:G}: [{l.CLevel}] : {l.Content}",s =>
12 {
13 var mh = DefFileLogRegex.Match(s);
14 if (!mh.Success) return null;
15 return new FileLogger<FileLoggerEventLevel>.LogLine() { HTime = DateTime.Parse(mh.Groups[1].Value), CLevel = (FileLoggerEventLevel)Enum.Parse(typeof(FileLoggerEventLevel), mh.Groups[2].Value), Content = mh.Groups[3].Value };
16 });
17 log.Log(MyLevel.level2, "自定义级别信息");
18 log.LogMessage("一般信息");
19 log.LogWarning("警告信息");
20 log.LogError(new Exception("错误信息"));
超轻量级的c#版基于文件的日志记录工具,可定制输出格式,可指定日志文件的更多相关文章
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,nloglogutil
封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil,代码比较简单,主要是把MongoTarget的配置.FileTarget的配置集成到类中,同时利用缓存依赖来判断是否需要重新创 ...
- Go/Python/Erlang编程语言对比分析及示例 基于RabbitMQ.Client组件实现RabbitMQ可复用的 ConnectionPool(连接池) 封装一个基于NLog+NLog.Mongo的日志记录工具类LogUtil 分享基于MemoryCache(内存缓存)的缓存工具类,C# B/S 、C/S项目均可以使用!
Go/Python/Erlang编程语言对比分析及示例 本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性, ...
- 基于SQLite日志记录工具--Log4W
最近压迫自己写点自己的东西,但是水平不高,槽点多,望各位请轻喷,嘿嘿! 以前用过一个Log4Net的东东,但是保存的是文本文件,不好过滤,而且用的不多,也不太熟悉,所以自己也当写一个练练手吧! ...
- System.Security.Cryptography.RSA.FromXmlString 系统找不到指定的文件和X509读取证书文件系统找不到指定的文件异常
前言: 最近公司增加服务器,在新增加的服务器中发现一些问题. 1.应用程序在读取证书文件中出现"系统找不到指定的文件."异常,但是已经确认证书文件存在.本地测试也可以读取,就在新增 ...
- 一个小工具,利用php把指定目录文件递归上传到阿里云OSS
cp2oss(_GALLERY_DIR); function cp2oss($directory) { $mydir = dir($directory); while($file = $mydir-& ...
- HtmlParse:一款超轻量级的HTML文件解析和爬取工具
HtmlParse 是一款基于windwos平台的HTML文档解析工具,可快速构建DOM树,从而轻松实现网页元素的爬取工作.DOM树就是一个HTML文档的节点树,每个节点由:标签(Tag).属性(At ...
- 基于java.util.logging实现轻量级日志记录库(增加根据当前类class初始化,修复线程池模型(javaEE)下的堆栈轨迹顺序与当前调用方法不一致问题)
前言: 本章介绍自己写的基于java.util.logging的轻量级日志记录库(baseLog). 该版本的日志记录库犹如其名,baseLog,是个实现日志记录基本功能的小库,适合小型项目使用,方便 ...
- 基于Java+HttpClient+TestNG的接口自动化测试框架(八)------ 针对文件的处理
在实际的接口测试中,有时需要根据情况进行文件的上传和下载.在文件数量比较小的时候,我们当然可以直接处理(比如若干个接口都用一个文件).但是,如果我们上传的文件需要使用不同文件夹里不同的文件,而且数量又 ...
- logrotate日志管理工具与split文件切割命令
概述 logrotate是一个Linux系统默认安装了的日志文件管理工具,用来把旧文件轮转.压缩.删除,并且创建新的日志文件.我们可以根据日志文件的大小.天数等来转储,便于对日志文件管理. logro ...
随机推荐
- 怎样更直观的查看KingbaseES数据库日志
数据库日志相关参数:默认设置 log_destination = 'stderr' # Valid values are combinations of # stderr, csvlog, syslo ...
- MyBatis 简介、优缺点
40)谈谈 MyBatis Mybatis 是一个半自动化的 ORM 框架,它对 jdbc 的操作数据库的过程进行封装,使得开发者只需要专注于 SQL 语句本身,而不用去关心注册驱动,创建 conne ...
- CTFshow pwn31 wp
PWN31 使用checksec查看保护 发现除了canary剩下保护全开,那么就没有前面几个题目那么简单了,ida打开看见他给了我们main函数地址 虽然开了pie但是在他们之间的偏移是一定的,那么 ...
- #范德蒙德卷积,第二类斯特林数,NTT#洛谷 2791 幼儿园篮球题
题目 \(T(T\leq 200)\)组数据求 \[\frac{1}{C(n,k)}\sum_{i=0}^kC(m,i)C(n-m,k-i)i^L \] 对于所有数据满足 \(n,m,k\leq 2* ...
- Arm架构下麒麟操作系统安装配置Mariadb数据库
1.安装配置JDK (1)检查机器是否已安装JDK 执行 java -version命令查看机器是否安装JDK,一般麒麟操作系统默认安装openjdk 1.8. (2)安装指定版本JDK 如果麒麟操作 ...
- js实现电子白板
功能:使用画笔绘制笔迹(线条).橡皮檫 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- openGauss共享存储对接Ceph-单机openGauss-Ceph zhangxb2023-02-18
openGauss + DSS + Ceph 部署操作步骤 本文档介绍单机版 openGauss+DSS+Ceph 集群部署方式.后续提供主备下的步骤. 服务器: Hostname IP 系统 规格 ...
- HarmonyOS数据管理与应用数据持久化(二)
通过键值型数据库实现数据持久化 场景介绍 键值型数据库存储键值对形式的数据,当需要存储的数据没有复杂的关系模型,比如存储商品名称及对应价格.员工工号及今日是否已出勤等,由于数据复杂度低,更容易兼容不同 ...
- maven 创建spring boot 需要的配置[一]
前言 之所以写这个是因为现在官方推荐云创建: 所以标注一下maven project,创建后,如何导入spring boot. 正文 1.步骤一 在pom.xml 中加入: <dependenc ...
- C#微服务必学清单
在 C# 领域,有一些不错的微服务书籍和开源框架,对于学习微服务相关知识非常有帮助.以下是一些建议您阅读的微服务书目和开源框架. 微服务书目: 1. <Building Microservice ...