C#: 日志函数

背景:

1.常见的官方日志模块项目过于复杂,且配置过于繁琐,针对这种现象,实现在大型项目中快速定位错误问题;

实现思路:

1.设置当前日志文件路径(获取到当前文件应用程序路径 + \ErrorLog)

2.判断当前日志文件路径是否存在,不存在则创建

3.在当前日志文件路径下创建日志文本

4.判断当前文件是否存在,如果不存在则创建,如果存在则增加

源码:

csharp 复制代码
using System;
using System.IO;

public class Logger
{
    private static StreamWriter streamWriter;

    // 日志级别
    public enum LogLevel
    {
        INFO,
        WARNING,
        ERROR
    }    
    public static void WriteLog(LogLevel level, string message)
    {
        try
        {
            string directoryPath = Environment.CurrentDirectory + "\\ErrorLog";    //在获得文件夹路径(根据你们自己的实际情况去写错误日志文件夹路径)

            // 判断文件夹是否存在,如果不存在则创建
            if (!Directory.Exists(directoryPath))
            {
                Directory.CreateDirectory(directoryPath);
            }

            string logFilePath = Path.Combine(directoryPath, $"{DateTime.Now.ToString("yyyy-MM-dd")}.log");

            // 判断文件是否存在,如果不存在则创建,如果存在则追加。
            using (streamWriter = !File.Exists(logFilePath) ? File.CreateText(logFilePath) : File.AppendText(logFilePath))
            {
                streamWriter.WriteLine("***********************************************************************");
                streamWriter.WriteLine(DateTime.Now.ToString("HH:mm:ss"));
                streamWriter.WriteLine($"Log Level: {level}");
                if (message != null)
                {
                    streamWriter.WriteLine($"Message:\r\n{message}");
                }
            }
        }
        finally
        {
            if (streamWriter != null)
            {
                streamWriter.Flush();
                streamWriter.Dispose();
                streamWriter = null;
            }
        }
    }
}

class Program
{
    static void Main()
    {
        // 测试单元
        Logger.WriteLog(Logger.LogLevel.INFO, "This is an informational message.");
        Logger.WriteLog(Logger.LogLevel.WARNING, "This is a warning message.");
        Logger.WriteLog(Logger.LogLevel.ERROR, "This is an error message with some additional information.");
    }
}
相关推荐
lsx2024066 分钟前
XSLT `<sort>` 元素详解
开发语言
_olone7 分钟前
牛客每日一题:显生之宙(Java)
java·开发语言·算法·牛客
Sirens.10 分钟前
Java 包装类、泛型与类型擦除
java·开发语言·javac
小光学长26 分钟前
基于ssm的膳食健康管理系统e6whl4q7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
无心水30 分钟前
【常见错误】2、Java并发编程避坑指南:从加锁失效到死锁,10个案例教你正确使用锁
java·开发语言·python
青衫码上行30 分钟前
【项目开发日记 | Java架构】第一天
java·开发语言·spring cloud
至为芯35 分钟前
IP2075_34S至为芯支持C口快充的30W功率AC/DC芯片
c语言·开发语言
AI_56781 小时前
基于智优达平台的Python教学实践:从环境搭建到自动评测
开发语言·前端·人工智能·后端·python
j_xxx404_1 小时前
力扣困难算法精解:串联所有单词的子串与最小覆盖子串
java·开发语言·c++·算法·leetcode·哈希算法
嘉琪0011 小时前
前端数组核心方法(高级视角 + 场景 + 精简)——————2026 0309
开发语言·前端·javascript