
C#实现每天创建日志文件
日志文件的创建:每天自动创建日志文件,并存储于特定目录下。 日志内容的追加:支持向现有日志文件中追加内容,而非覆盖已有数据。 日志文件的读取:能够检索指定日志文件的全部内容。 日志文件的清空:提供清空日志文件内容的功能。 日志文件的删除:支持按指定路径删除特定日志文件。
高效性:支持快速读取和追加操作。 安全性:确保日志数据不会被覆盖或丢失。 可扩展性:支持定制化日志文件路径和存储规则。
发布日期:2021-05-10 09:24:52
浏览次数:22
分类:精选文章
本文共 3587 字,大约阅读时间需要 11 分钟。
日志文件类及其应用
日志文件类的功能设计
为了实现高效的日志管理,我们设计并开发了一个功能完善的日志文件类。该类能够满足以下需求:
该类的核心设计理念是确保日志数据的安全存储和高效管理,避免数据丢失或覆盖。
实现细节
文件路径管理
日志文件的存储路径由以下逻辑确定:
private static string LogPath{ get { string OutPath = SYSTEM_OUTLOG_FILEDIRECTORY; if (!Directory.Exists(OutPath)) { Directory.CreateDirectory(OutPath); } return OutPath + DateTime.Today.ToString("yyyy-MM-dd") + ".txt"; }}
通过该逻辑,系统自动确保日志文件存储在指定目录下,并按日期生成唯一文件名。
功能实现
1. 写入日志信息
public static bool Write(string needWriteInfo){ bool success = false; string logPath = LogPath; if (File.Exists(logPath)) { // 追加写入 using (FileStream fs = new FileStream(logPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) { using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)) { sw.WriteLine($"{DateTime.Now} {needWriteInfo}"); success = true; } } } else { // 创建新文件 using (FileStream fs = new FileStream(logPath, FileMode.CreateNew, FileAccess.ReadWrite, FileShare.ReadWrite)) { using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8)) { sw.WriteLine($"{DateTime.Now}: {needWriteInfo}"); success = true; } } } return success;}
2. 读取日志内容
public static string Read(string path){ string contents = string.Empty; if (File.Exists(path)) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (StreamReader sr = new StreamReader(fs, Encoding.UTF8)) { contents = sr.ReadToEnd(); } } } return contents;}
3. 清空日志文件
public static bool Clear(string path){ bool success = false; if (File.Exists(path)) { using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { fs.Seek(0, SeekOrigin.Begin); fs.SetLength(0); success = true; } } return success;}
4. 删除日志文件
public static bool Delete(string path){ bool success = false; if (File.Exists(path)) { File.Delete(path); success = true; } return success;}
测试与验证
我们通过以下测试用例验证了日志文件类的功能:
using Kernal;using System;namespace XmlHelper{ class Program { static void Main(string[] args) { for (int i = 0; i <= 100; i++) { EveryDayLog.Write("这是一个测试!!!!" + i); if (i == 100) { Console.WriteLine("写入完成!!!"); } } string path = @"C:\Users\CoffeeMilk\Desktop\XmlHelper\XmlHelper\bin\Debug\EveryDayLog\2019-05-27.txt"; // 读取文件内容 string a = EveryDayLog.Read(path); Console.WriteLine(a); // 清空文件内容 bool success = EveryDayLog.Clear(path); Console.WriteLine("清空情况=" + success); // 删除文件 // bool success1 = EveryDayLog.Delete(path); // Console.WriteLine("删除情况=" + success1); Console.Read(); } }}
测试结果显示,类方法均能正常执行,且不会造成系统异常。
系统效果展示
该日志文件类具有以下优点:
通过实际应用,可以清晰地看到日志文件的存储结构和内容管理流程。