我有一个基于C#代码的简单独立日志记录应用程序,它接受参数并将它们附加到日志文件中。
某些事件多次出现在日志中(由于重试)
"跳过"最好的方法是什么?记录重复事件x段时间?
(因为只有在事件发生时才会调用日志记录应用程序,我无法将此数据保存在内存中)
我的第一个想法是保留一些带有事件哈希值的文件(不包括时间戳)并在列表中检查它,但我想知道是否有更好的方法这样做,因为我们记录的相当很多数据,我担心管理另一个文件,运行哈希函数并搜索我是该功能的杀手。
答案 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
区别在于将日志记录移出重试循环。