Files
zhishinet/xuyangyang 7c9351c2b5
2026-04-19 17:33:11 +08:00

59 lines
2.2 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using System.IO;
using System.Threading;
// 建议放在单独的文件或命名空间底部
public static class LogHelper
{
// 定义日志文件夹路径(例如:项目目录下的 Logs 文件夹)
private static readonly string LogDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Logs");
// 确保文件夹存在
static LogHelper()
{
if (!Directory.Exists(LogDirectory))
{
Directory.CreateDirectory(LogDirectory);
}
}
/// <summary>
/// 写入日志到TXT文件
/// </summary>
/// <param name="message">日志内容</param>
/// <param name="level">日志级别 (Error, Warn, Info)</param>
public static void WriteLog(string message, string level = "Info")
{
try
{
// 生成文件名Log_2023-10-05.txt
string fileName = $"Log_{DateTime.Now:yyyy-MM-dd}.txt";
string filePath = Path.Combine(LogDirectory, fileName);
// 构建日志行
// [2023-10-05 14:30:25] [Error] 发生了xxx错误
string logLine = $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss.fff}] [{level}] {message}{Environment.NewLine}";
// 使用 FileStream 以追加模式写入,支持多线程安全写入
// 注意:这里使用了锁,防止多线程同时写入冲突
lock (typeof(LogHelper))
{
using (var stream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
using (var writer = new StreamWriter(stream))
{
writer.Write(logLine);
}
}
}
catch (Exception ex)
{
// 防止日志系统自身崩溃导致程序异常,这里只用 Debug 输出错误(或者什么都不做)
// Debug.WriteLine($"日志写入失败: {ex.Message}");
}
}
// 为了方便,可以封装几个常用方法
public static void Error(string message) => WriteLog(message, "ERROR");
public static void Warn(string message) => WriteLog(message, "WARN");
public static void Info(string message) => WriteLog(message, "INFO");
}