2012-02-08 63 views
0

我想解析日志文件中的数据,将其抽入数据库,然后清除日志文件。我可以调节FileSystemWatcher,还是Timer是更好的选择?

我可以使用FileSystemWatcher组件,并监视Change事件,但事件会不停地触发,因为日志文件几乎“不断”被写入。我不想打开/关闭db连接。我目前的直觉是使用一个计时器,然后每隔一段时间(基于时间或基于文件的时间和大小)解析/抽取/清除日志文件。

是否有处理场景(设计模式)的常见方法?

更新:我看到FileSystemWatcher有一个NotifyFilter属性,其中一个filbles是“Size”;我猜测(还没有发现任何验证),任何时候文件的大小改变了1KB就会触发;这将是一个合理的“油门”,如果是真的...

回答

1

不确定这是否是设计模式,但如果您在实际写入日志文件之前控制了多少缓冲区,则可以将频率降至最低。

+0

我不想影响编写日志文件的应用程序;他们不需要知道/担心这个解析/泵送/清除。 – 2012-02-08 17:23:14

+0

要求,要求......当我们知道它们是什么时,它总是更容易!无论如何,我相信你有一个更难控制访问日志文件的问题。如果应用程序正在写信给它,你如何清除它? – 2012-02-08 17:24:26

+0

是的,你是对的;我必须重新考虑这个问题/回到编码委员会...... – 2012-02-08 17:52:41

1

改变事件太方便了。我会使用计时器按计划检查文件,查看修改时间戳(并可能创建,特别是在有人删除/重新创建文件的情况下)。

1

您是否对日志文件生成有任何控制权?如果是这样,你可以做的就是创建一个新的日志文件,说每次达到一定的日志大小,并将旧的日志文件重命名为特定的格式。然后让文件系统观察器筛选“归档”日志文件,并在创建时对其进行处理。

+0

查看我的其他评论(我不想将此应用程序与其他人结合) – 2012-02-08 17:23:59

相关问题