C# 实现简单的日志工具类

简介: 这是一个C#文件日志类,支持按日期生成日志文件,提供Info、Warn、Error三种级别记录功能,线程安全且使用简单,适用于各类应用程序的日志记录需求。
using System.IO;
public enum LogLevel
{
    Info,
    Warning,
    Error
}
public class FileLogger
{
    private readonly string _logDir;
    private readonly object _lockObj = new object();
    public FileLogger(string logDirectory = "Logs")
    {
        _logDir = logDirectory;
        if (!Directory.Exists(_logDir))
        {
            Directory.CreateDirectory(_logDir);
        }
    }
    // 写入日志
    public void Log(string message, LogLevel level = LogLevel.Info)
    {
        lock (_lockObj)
        {
            string fileName = Path.Combine(_logDir, $"Log_{DateTime.Now:yyyyMMdd}.txt");
            string logContent = $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] [{level}] {message}{Environment.NewLine}";
            File.AppendAllText(fileName, logContent, Encoding.UTF8);
        }
    }
    // 快捷方法
    public void Info(string message) => Log(message, LogLevel.Info);
    public void Warn(string message) => Log(message, LogLevel.Warning);
    public void Error(string message) => Log(message, LogLevel.Error);
    // 调用示例
    public static void TestLogger()
    {
        var logger = new FileLogger();
        logger.Info("程序启动");
        logger.Warn("配置文件未找到,使用默认配置");
        logger.Error("数据库连接失败");
    }
}
相关文章
|
机器学习/深度学习 人工智能 测试技术
AI计算机视觉笔记二十五:ResNet50训练部署教程
该项目旨在训练ResNet50模型并将其部署到RK3568开发板上。首先介绍了ResNet50网络,该网络由何恺明等人于2015年提出,解决了传统卷积神经网络中的退化问题。项目使用车辆分类数据集进行训练,并提供了数据集下载链接。环境搭建部分详细描述了虚拟环境的创建和所需库的安装。训练过程中,通过`train.py`脚本进行了15轮训练,并可视化了训练和测试结果。最后,项目提供了将模型转换为ONNX和PT格式的方法,以便在RK3568上部署。
1114 2
|
API C#
异步轮询 Web API 的实现与 C# 示例
异步轮询 Web API 的实现与 C# 示例
485 1
|
开发框架 前端开发 JavaScript
在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
在Winform开发中,使用Async-Awati异步任务处理代替BackgroundWorker
|
存储 开发框架 前端开发
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
基于SqlSugar的开发框架循序渐进介绍(10)-- 利用axios组件的封装,实现对后端API数据的访问和基类的统一封装处理
|
开发框架 缓存 前端开发
使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件
使用扩展函数方式,在Winform界面中快捷的绑定树形列表TreeList控件和TreeListLookUpEdit控件
|
前端开发 C# Windows
WPF基础:在Canvas上绘制图形
WPF基础:在Canvas上绘制图形
565 0
|
消息中间件 监控 RocketMQ
RocketMQ
RocketMQ是一个开源的分布式消息中间件,由阿里巴巴集团开发和维护。
353 1
|
小程序 Android开发
uniapp进行条件编译的两种方法
uniapp进行条件编译的两种方法
747 0
|
弹性计算 API 对象存储
OSS访问域名使用规则
OSS会为每一个存储空间(Bucket)分配默认的访问域名,本文介绍OSS访问域名的构成规则及使用方式。
750 0
|
运维 测试技术 程序员
集成测试如何做?
集成测试如何做?
939 0
下一篇
开通oss服务