格式化RDBMS日志文件的最佳方法是什么?

时间:2012-05-08 15:51:02

标签: logging

如果我有一个将日志文件写入文件系统的应用程序,我后来希望能够将这些日志转储到RDBMS中,以便能够更容易地查询特定项目(例如,我想查询与之相关的所有日志)事务ID X,不仅仅是日志级别为INFO或某个日期的查询。

什么是格式化日志消息的可靠方式,以便能够轻松地将其放入RDBMS中以允许将来我实际记录的内容发生更改(添加更多内容)?

1 个答案:

答案 0 :(得分:0)

将日志条目的属性编码为名称 - 值对。您需要选择值部分的分隔符;也就是说,它需要是不会出现在值本身中的东西。

日志条目的一些属性,如果您还没有考虑过问题的那一部分:

  • 时间戳
  • 严重性(致命,错误,信息,调试),可能是一个字符串
  • 作为条目的源代码中的位置,作为文件名和行号和/或类名称和方法名称
  • 交易
  • 自由文本:无论代码需要记录在条目

还要考虑:

  • 堆栈跟踪:有点乱,因为它往往是一个未指定的迭代
  • 您的运行时提供的异常信息(C#?Java?)
  • 用户ID
  • 主题信息

这是与您的分隔符选择竞争的自由文本属性。

玩具示例日志条目,使用双括号作为分隔符:

timemstamp=[[24-Apr-2012 15:48:28.749]] severity=[[error]] location=[[Foo.java (45)]] transaction=[[48241]] free=[[Cannot open file 'zqx3.txt']]

您的问题未使用实施语言标记。在Java land中,log4j是一个流行的日志记录框架。我相信.NET有合适的端口或工作方式。

另见A simple log file format