【问题标题】:Get an entry ID for log4net ADONetAppender获取 log4net ADONetAppender 的条目 ID
【发布时间】:2010-08-18 18:18:54
【问题描述】:

我在 Web 应用程序中使用 log4net,并将所有页面错误记录到 SQL 服务器。我想知道是否有任何方法可以检索它生成的条目 ID。我要离开这里找到的文档

http://logging.apache.org/log4net/release/config-examples.html

我想将此 ID 用作我可以向客户显示的参考号,以便他们可以联系客户支持在系统中查找,而不必通过日志文件。

【问题讨论】:

    标签: log4net adonetappender


    【解决方案1】:

    除了按照 floyddotnet 的建议编写自己的附加程序之外,您还可以考虑:

    1. 使用 GUID。您可以轻松地在您的应用程序中生成它,并将服务于您的大部分目的。缺点:如果客户试图通过电话告诉您的支持信息,可能会给客户带来不便。如果您只有电子邮件支持,那么这可能不是问题。
    2. 考虑在日志框架之外创建一个事件编号。快速调用一个存储过程,该过程返回一个您保存在日志表的可为空字段中的 ID。
    3. 以上组合:使用 Guid 并在记录后调用一个存储过程,该过程创建一个事件并返回 ID。

    编写一个返回 ID 的附加程序会在您的应用程序和附加程序之间创建一个您通常没有的依赖关系:Log4net 的设计明确区分了记录和在某处写入日志消息。您需要的 appender 会影响这种分离。

    【讨论】:

    • 我走的是SP路线。工作得很好!
    【解决方案2】:

    由于 ID 是由数据库而不是由 log4net 生成的,我认为您无法获得此信息。

    我在使用 log4net 处理这种情况时所做的是在消息中包含一个日期时间戳,该时间戳可以精确到毫秒,并将其作为参考编号呈现给用户。然后您可以执行一个简单的 SQL 查询来获取日志表中的消息。

    【讨论】:

      【解决方案3】:

      我不确定它是否可行,但您可以为 log4net 编写自己的 Appender,最终将此信息存储在 log4net-context 中。

      如何为 log4net 编写附加程序:

      http://www.alteridem.net/2008/01/10/writing-an-appender-for-log4net/

      上下文描述:

      http://logging.apache.org/log4net/release/manual/contexts.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 2012-10-23
        • 1970-01-01
        • 2017-02-19
        相关资源
        最近更新 更多