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();
    }
    }
    }

    测试结果显示,类方法均能正常执行,且不会造成系统异常。


    系统效果展示

    该日志文件类具有以下优点:

  • 高效性:支持快速读取和追加操作。
  • 安全性:确保日志数据不会被覆盖或丢失。
  • 可扩展性:支持定制化日志文件路径和存储规则。
  • 通过实际应用,可以清晰地看到日志文件的存储结构和内容管理流程。

    上一篇:C#实现对象为Json嵌套数组文件的创建
    下一篇:C#中使用Newtonsoft.Json(Json.NET)的创建Json文件和解析

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年05月03日 11时22分07秒