【问题标题】:Asynchronous Logging To A Database .Net [closed]异步记录到数据库.Net [关闭]
【发布时间】:2009-04-15 16:09:46
【问题描述】:

我想知道人们使用什么来登录 .net。 我们这里有 log4net,但我希望异步执行它并连接到数据库 有一个很好的观众。

流行的选择是什么??

问候。

【问题讨论】:

    标签: .net logging asynchronous


    【解决方案1】:

    Log4Net 将日志消息同步传递给 appender,但 appender 可以异步运行according to this。 SqlServerAppender 有一个 bufferSize 属性,用于控制在将日志事件写入数据库之前在缓冲区中收集多少日志事件。如果这不能满足您的需求,您可以编写自己的附加程序。 this post 中的回复似乎给出了一个可行的示例。

    【讨论】:

    • BufferingForwardingAppender 也可用于提供工作单元模式的实现。它是一个附加器,它将按照配置缓冲消息,然后将它们中继到另一个附加器。它不是线程安全的。与任何类型的异步日志记录一样,您可以获得性能,但在进程失败的情况下可能会丢失条目。
    【解决方案2】:

    试试 logFaces,它是集中式日志服务器、聚合器和查看器,与 log4net UDP appender 配合得很好。

    披露:我是这个产品的作者。

    【讨论】:

      【解决方案3】:

      我强烈建议您查看NLOG。它非常灵活并且异步记录。您可以将其配置为记录到特定文件或数据库。但是,您需要构建自己的日志查看器。

      我们虔诚地使用 NLOG,对此非常满意。

      【讨论】:

        【解决方案4】:

        当我们这样做时,我们只是简单地写入一个简单的内部队列并让一个线程进行实际的写入。这样,我们正在记录的代码受到的影响最小,并且简单的队列和线程管理让我们保持最新状态。

        【讨论】:

          【解决方案5】:

          我们只是在出错时登录到数据库,因为我们是一个频繁使用的 OLTP 系统。

          如果数据库宕机,那么系统就宕机了:手机红热时的异步日志记录是多余的......

          【讨论】:

          • 同步日志会影响性能,在我的情况下,我不想只记录错误。
          • 我们只记录错误以便我们接受命中
          【解决方案6】:

          我看到有人使用 Microsoft Enterprise Library 日志记录工具结合 MSMQ 来实现异步日志记录。对查看器没有帮助。

          【讨论】:

            猜你喜欢
            • 2020-06-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-14
            • 2019-08-30
            • 2015-01-31
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多