当前位置: 首页 > 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单机版上手示例
  • 特朗普:不谋求第三个总统任期,中意万斯鲁比奥“接棒”
  • 国铁集团:铁路五一假期旅客发送量累计已超1亿人次
  • 谢承祥已任自然资源部总工程师
  • 立夏的野火饭
  • 申活观察|演出场次破纪录、入境游导游档期忙,上海文旅商“热力”拉满
  • 日本政府强烈反对美关税政策并要求其取消