【问题标题】:Create a logger in .Net having Throttling mode functionality在具有节流模式功能的 .Net 中创建记录器
【发布时间】:2012-03-22 06:16:51
【问题描述】:
我必须在 .NET 中创建一个应该在正常和节流模式下工作的 Logger。
当由于某种原因(例如服务器未启动)出现连续错误或相同错误时,它应该停止记录(意味着它应该切换到节流模式),因为如果说服务器很多天都没有启动,则多个日志文件会吃掉磁盘空间很大。
当连续错误或相同错误停止时,它应该返回正常模式。
任何人都可以帮助我了解如何实现这一目标的一些逻辑吗?我正在使用 Microsoft Enterprise Library 来创建记录器。
【问题讨论】:
标签:
.net
logging
enterprise-library
【解决方案1】:
Enterprise Library 不会让您知道发生了故障。它会吞下异常。如果您配置了错误特殊源,它会将 LogEntry 写入错误特殊源。
您可以编写一个包含您的逻辑的自定义跟踪侦听器,也可以修改该块以包含您的专门逻辑。
我假设您要编写自定义跟踪侦听器。
鉴于上述情况,我认为您有 2 个选择:在您的自定义跟踪侦听器中执行记录前检查以验证某些前提条件(服务器已启动等),或者在您的自定义跟踪侦听器中针对错误特殊来源。对于后者,您需要知道错误特殊源的位置和格式,并且需要对其进行解析以确定是否满足您的错误条件(每分钟的错误数或连续错误数等)。
这两种解决方案都有缺点。
这个怎么样:对于错误的特殊源,使用 RollingFlatFileTraceListener 设置来覆盖,从而限制磁盘的大小(您可以选择文件的大小)?如果需要,您甚至可以收集日志信息。这似乎是双赢的。