首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过FileSystemWatcher减少受监控的文件数量

问通过FileSystemWatcher减少受监控的文件数量
EN

Stack Overflow用户
提问于 2018-06-11 07:29:48
回答 1查看 49关注 0票数 2

我的Windows服务应用程序每秒都会将日志写入文件夹中的文件。我想监控日志活动,如果有一段时间没有日志记录,它就会发出错误信号。

以下是日志文件名的示例。一次只写入最新的日志文件,不写入其他文件。Monitor应用程序只关心最后一个日志文件。

代码语言:javascript
复制
MyApplication.MachineName.2018-06-05.log

MyApplication.MachineName.2018-06-04.001.log

下面是监控日志活动的代码。

代码语言:javascript
复制
   private  void WatchFileChanges()
    {
        // Create a new FileSystemWatcher and set its properties.
        FileSystemWatcher watcher = new FileSystemWatcher();
        watcher.Path = @"C:\Logs";
        /* Watch for changes in LastWrite times */
        watcher.NotifyFilter = NotifyFilters.LastWrite;
        // Only watch text files.
        watcher.Filter = "*.log";

        // Add event handlers.
        watcher.Changed += new FileSystemEventHandler(OnChanged);
        watcher.Created += new FileSystemEventHandler(OnChanged);


        // Begin watching.
        watcher.EnableRaisingEvents = true;       

    }

    // Define the event handlers.
    private  void OnChanged(object source, FileSystemEventArgs e)
    {           
        Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);         
    }

问题:

有没有办法减少文件夹下监控的日志文件数量?例如,仅监视今天或最近两天的日志文件,而不是文件夹中的所有文件。由于内部缓冲区有限,过多的日志文件可能会导致监控无法工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-11 09:24:52

这里需要有一点创意,最简单的方法就是使用FileSystemWatcher.Filter Property

获取或设置筛选器字符串,该字符串用于确定在目录中监视哪些文件。

备注

若要监视所有文件中的更改,请将Filter属性设置为空字符串("")。若要监视特定文件,请将Filter属性设置为文件名。例如,若要监视文件筛选器中的更改,请将MyDoc.txt属性设置为"MyDoc.txt"。您还可以监视特定类型的文件中的更改。例如,若要监视任何文本文件中的更改,请将Filter属性设置为"*.txt"。不支持使用多个筛选器,例如"*.txt|*.doc"。

更多示例

  • *.*:所有文件(默认)。空字符串("")还监视所有files.
  • *.txt:所有以"txt“extension.
  • *recipe.doc结尾的文件:所有以”extension.
  • win*.xml“结尾的文件:所有以”files.
  • *.txt“开头并带有"xml”extension.
  • Sales*200?.xls的文件:

代码语言:javascript
复制
- Matches the following:       
    - Sales July 2001.xls
    - Sales Aug 2002.xls
    - Sales March 2004.xls

​

代码语言:javascript
复制
- but does not match:      
    - Sales Nov 1999.xls

​

​

  • MyReport.Doc:仅观看MyReport.doc

有了这些信息,您就可以轻松地确定是否可以为当天的日志创建筛选器,如果可以,则可以每天动态更改筛选器以针对这些日志。如文档中所述

在FileSystemWatcher对象开始接收事件后,可以更改

的Filter属性。

或者就像评论中提到的,

#en0#If>如果您使用的是日志记录框架,请将当天的日志命名为当天的不同日志,这样它们就可以将当天的日志放在不同的文件夹中,这样就可以增加

  • 缓冲区并监视

  • FileSystemWatcher

如果你选择接受,这就是你的使命。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档