【问题标题】:Can Microsoft.VisualBasic.Logging.FileLogTraceListener be set to retain the 5 most recent log onlyMicrosoft.VisualBasic.Logging.FileLogTraceListener 是否可以设置为只保留最近的 5 个日志
【发布时间】:2018-07-26 00:51:49
【问题描述】:

我在我的 C# 应用程序中使用 Microsoft.VisualBasic.Logging.FileLogTraceListener 进行日志记录。我已将其设置为每天滚动日志文件。请参阅下面的设置:

<add name="TextListener"
      type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      traceOutputOptions="DateTime,ProcessId,ThreadId"
      customLocation=""
      location="ExecutableDirectory"
      logFileCreationSchedule="Daily"
      baseFileName="TestAppLog"/>

我的问题是它只是将旧文件保留在系统中,因此即使日常文件很小,最终也会累积。我的理想方案是只保留过去 10 天的日志文件,任何早于它从系统中删除的文件。

有没有办法在 Microsoft.VisualBasic.Logging.FileLogTraceListener 设置上做到这一点?如果没有,实现自动清除旧数据的最佳方法是什么?

【问题讨论】:

    标签: c# .net logging


    【解决方案1】:

    我在文档中找不到这样的设置。

    我能想到的是,每天设置一个scheduled task 来清理过时的日志。计划任务可以是 exe 或批处理,非常容易实现和部署。

    这是一个用 PowerShell 编写的示例:

    Delete files older than 15 days using PowerShell

    以及如何在任务计划程序中配置它

    Use the Windows Task Scheduler to Run a Windows PowerShell Script

    【讨论】:

    • 谢谢!我会查看您提供的链接。最终,我想要一个由我的应用程序本身处理的解决方案,例如扩展 Microsoft.VisualBasic.Logging.FileLogTraceListener 类以支持清除。
    • 是的,我想到了那个选项...自定义文本侦听器继承自 FileLogTraceListener,它会清除过时的日志,但是 在哪里 放置清除代码?构造函数? - 不确定是否每天都会创建 FileLogTraceListener 的新实例,或者它是否继续使用相同的实例。众多写入/跟踪覆盖之一?
    猜你喜欢
    • 1970-01-01
    • 2016-02-18
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多