当前位置: 首页 > news >正文

c# 简单实现将Message的内容保存到txt中,超过100个则清理旧文件

using System;
using System.IO;
using System.Threading;public static class LogManager
{private static readonly object _fileLock = new object(); // 线程安全锁private const int MaxFiles = 100;                        // 最大文件数限制private const string LogDirectory = "Logs";              // 日志目录private const string FilePrefix = "log_";                // 文件名前缀private const string FileExtension = ".txt";             // 文件扩展名/// <summary>/// 安全写入日志(自动处理文件滚动和清理)/// </summary>public static void SaveMessageWithRotation(string message){try{// 确保日志目录存在Directory.CreateDirectory(LogDirectory);// 线程安全操作lock (_fileLock){// 生成带时间戳的新文件名string timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmssfff");string newFilePath = Path.Combine(LogDirectory, $"{FilePrefix}{timestamp}{FileExtension}");// 写入新文件File.WriteAllText(newFilePath, message);// 执行文件清理(异步不阻塞当前操作)ThreadPool.QueueUserWorkItem(_ => CleanOldLogs());}}catch (Exception ex){// 这里应该用真正的日志系统记录错误(如NLog)Console.WriteLine($"日志写入失败: {ex.Message}");}}/// <summary>/// 清理旧日志文件(保留最新100个)/// </summary>private static void CleanOldLogs(){try{var directory = new DirectoryInfo(LogDirectory);if (!directory.Exists) return;// 获取所有日志文件并按创建时间排序var files = directory.GetFiles($"{FilePrefix}*{FileExtension}").OrderBy(f => f.CreationTime).ToArray();// 删除超出数量的旧文件if (files.Length > MaxFiles){foreach (var file in files.Take(files.Length - MaxFiles)){try { file.Delete(); }catch { /* 忽略删除失败 */ }}}}catch{// 清理失败不影响主流程}}
}

相关文章:

  • Linux:线程的同步与互斥(生产者消费者模型的demo)
  • Function Calling的时序图(含示例)
  • FA-YOLO:基于FMDS与AGMF的高效目标检测算法解析
  • C++指针与内存管理深度解析
  • TDengine Restful 接口API
  • 【机试】高精度
  • Valgrind内存调试工具详解
  • PGSql常用操作命令
  • DeepSeek-R3、GPT-4o 与 Claude-3.5-Sonnet 全面对比:性能、应用场景与技术解析
  • docker一次给所有容器限制内存大小
  • QT项目----电子相册(2)
  • PowerBI 表格显示无关联的表数据
  • 智能产线07期-能耗监控:数据驱动的智慧能源管理系统
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(一级)真题
  • 如何实现采购数字化?
  • 智能翻译播放器,让无字幕视频不再难懂
  • 4.18学习总结
  • 从数据集到开源模型,覆盖无机材料设计/晶体结构预测/材料属性记录等
  • 从瀑布到敏捷:我是如何学习PSM完成转型的
  • Oceanbase单机版上手示例
  • 从6家试点扩展至全行业,券商并表监管有何看点?
  • 林诗栋4比1战胜梁靖崑,晋级世界杯男单决赛将和雨果争冠
  • 张小泉:控股股东所持18%股份将被司法拍卖,不会导致控制权变更
  • “走进电影”:虚拟现实电影产业有新进展
  • 中央和国家机关工委建立健全整治形式主义为基层减负长效机制
  • 《王牌对王牌》确认回归,“奔跑吧”将有主题乐园