gpt4 book ai didi

c# - 写入日志文件类

转载 作者:行者123 更新时间:2023-11-30 14:38:14 24 4
gpt4 key购买 nike

我只是想知道写入日志的好方法。

我创建了一个单例类 Logger,它有 2 个方法:Write(eventDate, messageType, message)和 Dispose()。

在构造函数中,我创建了 StreamWriter(AutoFlush 设置为 true),它用于在 Write 方法中追加行。日志记录被广泛使用(但在一个线程中),每秒大约 10-15 条记录。

现在我思考以下两个问题,期待您的评论:)

首先是自动刷新 - 它是否一直打开和关闭文件? File.AppendText 是否相似?

其次,在 Dispose 中,我刷新 StreamWriter,然后对其调用 Dispose。如果不调用 Dispose 怎么办?我怎样才能确保它会被处理掉?因为如果我删除 AutoFlush 并会不时刷新流(可能通过维护内部计数器)并且当 n 条记录写入缓冲区时,我会刷新它,但是如果写入的记录少于 n 条并且程序终止怎么办?

最佳答案

您有什么理由不能使用开源日志记录框架,例如 NLog

设置为 write to a file 非常容易

这是将您的第一个日志写入文件的非常简单的方法:

  1. 右键单击引用
  2. 点击“管理 NuGet 引用”
  3. 确保选中左侧的“在线”选项卡,然后搜索“NLog”
  4. 安装“Intellisense(TM) 的 NLog 模式”(这将自动安装 xml NLog.config 和用于 xml intellisense 支持的 xsd 文件,并引入 NLog 所需的引用)NLog Schema for Intellisense(TM)
  5. 打开自动创建的 NLog.config 文件并取消注释示例目标和规则,它们应该如下所示:

    <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
    layout="${longdate} ${uppercase:${level}} ${message}" />

    <logger name="*" minlevel="Trace" writeTo="f" />

  6. 现在您已全部设置好记录内容,使用示例配置,每当您记录内容时,它会将其附加到运行可执行文件的/logs 目录下的 {shortdate}.log 文件中,因此如果您执行类似:
    var logger = NLog.LogManager.GetLogger("SampleLogger");
    logger.Trace("Logged Trace");
    logger.Debug("Logged Debug");
    logger.Info("Logged Info");
    logger.Warn("Logged Warn");
    logger.Error("Logged Error");
    logger.Fatal("Logged Fatal");

你会得到这个日志文件

NLog File

关于c# - 写入日志文件类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8232070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com