C#避免日志文件中每个时间段重复的最佳方法

时间:2017-02-22 18:50:10

标签: c# file logging io

我有一个基于C#代码的简单独立日志记录应用程序,它接受参数并将它们附加到日志文件中。

某些事件多次出现在日志中(由于重试)

"跳过"最好的方法是什么?记录重复事件x段时间?

(因为只有在事件发生时才会调用日志记录应用程序,我无法将此数据保存在内存中)

我的第一个想法是保留一些带有事件哈希值的文件(不包括时间戳)并在列表中检查它,但我想知道是否有更好的方法这样做,因为我们记录的相当很多数据,我担心管理另一个文件,运行哈希函数并搜索我是该功能的杀手。

1 个答案:

答案 0 :(得分:0)

记录器实际上不应该编辑所写的内容,因为它不会(或者至少不应该)知道业务逻辑 - 例如重试。

如果您不希望每次重试都已记录,请将日志记录向上移动到代码中,以便仅在所有重试失败后记录。

例如,听起来你有这样的东西(伪代码)

loop retries x number of times
    try action
    did action succeed?
        yes: break out of loop
        no : increment x
             log failure
end of retry loop
... logic continues

当你真正想要的是

set success flag to false
loop retries x number of times
    try action
    did action succeed?
        yes: set success flag to true
             break out of loop
        no : increment x
end of while
is success flag true
    yes: continue
    no : log failure
... logic continues

区别在于将日志记录移出重试循环。