Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 只记录一次重复消息,或记录频率更低_C#_Logging_Log4net - Fatal编程技术网

C# 只记录一次重复消息,或记录频率更低

C# 只记录一次重复消息,或记录频率更低,c#,logging,log4net,C#,Logging,Log4net,我使用log4net来满足我们的应用程序日志记录需求。该应用程序基于.NET3.5构建。此应用程序是一个数据驱动引擎,它对数据更改的某些计算进行评估。例如,当x或y发生变化时,将对x/y等简单计算进行评估。如果y为零,x以每秒1000的速率不断变化,我们每秒记录1000条错误消息 所以,我需要一种方法,要么只记录一次消息,要么记录频率更低,比如每分钟一次 public class MessageDetails { public string Message { get; set; }

我使用log4net来满足我们的应用程序日志记录需求。该应用程序基于.NET3.5构建。此应用程序是一个数据驱动引擎,它对数据更改的某些计算进行评估。例如,当x或y发生变化时,将对x/y等简单计算进行评估。如果y为零,x以每秒1000的速率不断变化,我们每秒记录1000条错误消息

所以,我需要一种方法,要么只记录一次消息,要么记录频率更低,比如每分钟一次

public class MessageDetails
{
   public string Message { get; set; }
   public DateTime TimeStamp { get; set; }
}
我正在考虑使用HashSet
存储记录的消息及其时间戳。为了简单起见,我们不必担心这个哈希集的大小。在记录新消息之前,我可以检查此消息之前是否已记录。然后我可以决定是否记录此消息

这是实现我想要实现的目标的好方法吗?
你们有什么建议吗?

如果(y==0 | | x==0)返回,首先检查
不是更好吗
在尝试计算之前?@FlorisPrijt这只是一个示例,说明计算表达式可能会导致错误,如果每秒计算1000次,则每秒将抛出1000个错误。我理解,但日志记录不是错误。如果出现错误,则最好尝试防止计算表达式发生。@Florispijt计算表达式通常由我们的客户(我们应用程序的用户)编写。是否添加验证取决于他们。如果表达式的任何输入发生更改,我们的应用程序只会计算用户编写的表达式。我希望现在一切都清楚了。