C#简易日志类:替代log4j,支持按天/周/月/年分割与文件大小控制

3 下载量 50 浏览量 更新于2024-08-31 收藏 57KB PDF 举报
"本资源提供了一个C#编写的简单日志类队列实现,用于替代Java的log4j日志框架。这个类名为`Log`,它具有以下特点: 1. **单例模式**:`Log.Instance`采用单例模式设计,确保在整个应用程序中只有一个实例可用,便于管理和控制日志行为。 2. **日志文件管理**:日志类支持按天、周、月、年的不同时间尺度进行文件分割,这使得日志文件的组织更加清晰,方便归档和查询。通过`LogFileSplit`枚举(如`LogFileSplit.Daily`、`LogFileSplit.Weekly`等)可以设置不同类型的拆分规则。 3. **自定义配置**:允许用户通过构造函数或静态属性设置日志文件的保存路径(`LogDirectory`)、文件名前缀(`FileNamePrefix`)、当前消息级别(`CurrentMsgType`,默认为Error级别)以及最大文件大小(`MaxFileSize`,仅在大小拆分模式下生效)。 4. **灵活的写入方法**:提供了`LogWrite`方法,支持传入字符串消息和自定义的消息级别参数,方便记录不同类型的日志事件。 5. **内存缓存队列**:内部使用一个队列来暂存未写入文件的消息,提高了性能,尤其是在高并发环境下。 6. **IDisposable接口实现**:表明此类遵循垃圾回收机制,确保资源的正确释放。 以下是`Log`类的主要部分代码,展示了其核心功能: ```csharp public class Log : IDisposable { private static readonly object _synObject = new object(); private static Log _instance; // 单例获取 public static Log Instance { get { lock (_synObject) { if (_instance == null) { _instance = new Log(); } } return _instance; } } // ...其他属性和方法... private List<string> queue; // 存储日志消息的缓存队列 // 写入日志的方法 public void LogWrite(string message, MsgLevel level = MsgLevel.Error) { // ...这里处理消息添加到队列、判断是否需要切换文件、文件大小控制等功能... } // Dispose方法用于资源清理 public void Dispose() { // 清理队列并关闭所有打开的文件流 // ...这里实现具体的资源释放逻辑... } } public enum LogFileSplit { Daily, Weekly, Monthly, Yearly, Sizely } ``` 这个类适用于C#项目中需要一个轻量级且易于定制的日志解决方案,开发者可以根据项目需求调整配置,轻松替换现有的log4j日志系统。