【问题标题】:Read console.log on change event在更改事件上阅读 console.log
【发布时间】:2014-02-21 20:38:21
【问题描述】:

快速解释。 我有一个在运行时编写 console.log 文件的游戏服务器。我正在尝试创建一个在进行新更改时读取文件的事件。

如果我从文本编辑器保存文档,我的 changeevent 运行良好。但不是在服务器写入时。

当我在运行时打开日志文件时,我可以看到文档中的所有行都写得很好。

为什么我没有调用事件?

代码:

class Collect
{
    public FileSystemWatcher watcher = new FileSystemWatcher("C:\\.q2online\\action\\logs\\");

    public Collect()
    {
        watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
           | NotifyFilters.FileName | NotifyFilters.DirectoryName;
        watcher.Changed += new FileSystemEventHandler(OnChanged);

        watcher.Filter = "console.log"; 
        watcher.EnableRaisingEvents = true;
    }

    private static void OnChanged(object scource, FileSystemEventArgs e)
    {
        Debug.WriteLine(ReadLastLineFromFile(DataContainer.path.Default.logFilePath));
    }

【问题讨论】:

    标签: c# events event-handling onchange filesystemwatcher


    【解决方案1】:

    几件事。 1. 可以关闭 NTFS 文件系统的上次访问时间更新。许多服务器这样做是为了减少文件系统活动。 Windows 也可能会延迟最多 1 小时写入上次访问时间。因此,根据上次访问获取实时更新通常是不可靠的。但是,您正在查看其他属性,因此这可能不是问题,但如果这是您要过滤的唯一属性,那就是问题了。

    还要注意,在文件系统句柄关闭之前,最后修改时间不会更新。如果您的服务器代码保持句柄打开并且仅附加到文件,这可能是一个问题。如果您控制服务器端代码,请检查以确保在每次写入后关闭文件句柄。这是一篇包含一些有用信息的文章:http://msdn.microsoft.com/en-us/library/windows/desktop/ms724290(v=vs.85).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多