3

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

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

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

4

3 回答 3

4

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

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

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

于 2010-08-19T11:15:23.283 回答
1

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

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

于 2010-08-18T18:24:30.187 回答
0

我不确定它是否可行,但您可以为 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

于 2010-08-18T18:25:14.913 回答