c#日志组件
最近做一个c++的服务端小项目,写了一个简单的日志组件,这两天用c#翻译了一遍,写起来比c++快多了,给大家分享一下!
组件运行起来后,所有的日志信息都会被缓存到一个集合中,然后由一个单独线程负责将集合中的日志信息写入文件。
支持功能如下:
1、日志信息可按等级进行存储;
2、支持日志文件到达指定大小自动更换;
3、只保存最近一个月的日志文件;
4、支持多线程环境下的日志记录;
大致就这么几点,功能也挺简单的,下面是组件接口:
using System;
namespace Soar.Framework
{
/// <summary>
/// 日志组件
/// </summary>
public interface ILogger
{
/// <summary>
/// 启动日志组件
/// </summary>
bool Run();
/// <summary>
/// 启动日志组件
/// </summary>
/// <param name="logLevel">等级</param>
/// <param name="logDirectory">日志文件存放目录(例如:logs\\)</param>
/// <param name="maxFileSize">单个日志文件默认大小(单位:MB)</param>
/// <returns></returns>
bool Run(LogLevel logLevel, string logDirectory, int maxFileSize);
/// <summary>
/// 获取当前设置的日志记录等级
/// </summary>
/// <returns></returns>
string GetLevel();
/// <summary>
/// 设置日志记录等级
/// </summary>
/// <param name="logLevel"></param>
/// <returns></returns>
bool SetLevel(LogLevel logLevel);
/// <summary>
/// 记录调试信息
/// </summary>
/// <param name="msg"></param>
void Debug(string msg);
/// <summary>
/// 记录一般信息
/// </summary>
/// <param name="msg"></param>
void Info(string msg);
/// <summary>
/// 记录警告信息
/// </summary>
/// <param name="msg"></param>
void Warn(string msg);
/// <summary>
/// 记录一般错误信息
/// </summary>
/// <param name="msg"></param>
void Error(string msg);
/// <summary>
/// 记录严重错误信息
/// </summary>
/// <param name="msg"></param>
void Fatal(string msg);
}
}
具体调用方式请参见源码,在编写该日志组件时,需要注意一点:
使用Create.File创建文件,该方法返回的是一个FileStream对象,且该对象会一直占用你创建的文件,使你无法对创建的文件进行操作,
所以需要在创建文件后,对返回的对象进行手动释放。
if (!File.Exists(filePath))
{
FileStream fs = File.Create(filePath);
fs.Flush();
fs.Close();
}
补充:软件开发 , C# ,