0

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

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

4

1 回答 1

0

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

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

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

还要考虑:

  • 堆栈跟踪:有点混乱,因为它往往是未指定的迭代
  • 运行时提供的异常信息(C#?Java?)
  • 用户身份
  • 线程信息

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

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

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

您的问题未使用实现语言标记。在 Java 领域,log4j是一个流行的日志框架。我相信.NET 有合适的端口或类似工作。

另请参阅简单的日志文件格式

于 2012-05-08T18:07:04.800 回答