C# 调试日志封装

C#调试日志封装

C#自带有个调试日志,但一般我们都用它在输出窗口中打印信息用,很少用来记录文本日志,一般的小型项目其实完全可以使用自带的调试类来记日志,在System.Diagnostics的系统命名空间下有个TraceListener类,我们继承它,并重写里面的方法即可。

1. TraceListener类概述

TraceListener类是.Net Core自带的用于追踪监视类,继承并重写实现里面的方法就能实现记录各种类型的日志,和以任意形式记录日志,比如记录文本,打印到控制台,或者记录到数据库,都可以,理论上也可以支持多线程并发写日志,当然要自己重写里面的方法。
TraceListener类截图

2. 封装实现自定义类

这里只实现了文本日志的记录,抛砖引玉吧,理论上应该还可以支持多线程并发。

/// <summary>
/// 追踪日志类
/// </summary>
public class MyListener : TraceListener
{
	/// <summary>
	/// 日志路径
	/// </summary>
	public string _filePath { get; private set; }

	/// <summary>
	/// 追踪日志构造方法
	/// </summary>
	/// <param name="name">日志名称</param>
	public MyListener(string name)
	{
		_filePath = 
			AppDomain.CurrentDomain.BaseDirectory + 
			name+
			".log" ;
	}

	/// <summary>
	/// 行内写日志
	/// </summary>
	/// <param name="message">日志行内容</param>
	public override void Write(string message)
	{
		File.AppendAllText(_filePath, $"{ DateTime.Now.ToLongTimeString()} {message}");
	}

	/// <summary>
	/// 另起一行,写日志
	/// </summary>
	/// <param name="message">日志行内容</param>
	public override void WriteLine(string message)
	{
		File.AppendAllText(_filePath, $"{ DateTime.Now.ToLongTimeString()}  " +
			$"{message}  " +
			$"{Environment.NewLine}");
	}

	/// <summary>
	/// 行内写日志
	/// </summary>
	/// <param name="message">日志行内容</param>
	/// <param name="category">日志分类</param>
	public override void Write(string message,string category)
	{
		File.AppendAllText(_filePath, $"{ DateTime.Now.ToLongTimeString()}  " +
		$"{message}  " +
		$"{category}");
	}

	/// <summary>
	/// 另起一行,写日志
	/// </summary>
	/// <param name="message">日志行内容</param>
	/// <param name="category">日志分类</param>
	public override void WriteLine(string message, string category)
	{
		File.AppendAllText(_filePath, $"{ DateTime.Now.ToLongTimeString()}  " +
			$"{message}  " +
			$"{category}" +
			$"{Environment.NewLine}");
	}
}
3. 使用说明

使用也很简单,先清除一下监听对象,再把自定义的监听对象加进去就可以了,执行完之后,在项目根目录下就能发现记录的文本日志了。

static void Main(string[] args)
{
	Trace.Listeners.Clear();
	Trace.Listeners.Add(new MyListener("myLogger"));

	try
	{
		var a = Convert.ToInt32("HelloWorld");
	}
	catch (FormatException ex)
	{
		Trace.WriteLine("Message:" + ex.Message, "Test");
	}
	Console.ReadKey();
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值