Files
FullAutoWaterCheck/全自动水压检测仪/LogHelper.cs

59 lines
2.2 KiB
C#
Raw Normal View History

2026-04-19 17:33:11 +08:00
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");
}