Answers:
JSON日志记录使您能够以编程方式解析日志文件,即使格式已及时更改。
一个很好的例子是Apache日志。默认情况下,Apache使用common
access.log格式:
"%h %l %u %t \"%r\" %>s %b"
假设您已经构建了一个脱机解析器,该解析器将使用这些日志文件之一并从中计算一些统计信息。
在某些时候,您将子域引入到您的应用程序中并包括virtual_host
到您的日志中(只是这样,您可以调试子域之一是否出现问题):
"%v %h %l %u %t \"%r\" %>s %b"
您的解析器没有使用virtual_hosts
,但是您仍然需要将解析器调整为:
%v
的开头)但是,如果您登录JSON,那么解析器甚至不会注意到添加的字段,并且可以很高兴地解析新日志和旧日志。如果添加的字段存在,其他解析器也可以使用 它们。
当然,对您来说,解析JSON比编写regexps
解析字符串日志要容易。
如果您的计算机运行得非常接近极限,以至于这些问题确实很重要,那么您很可能会遇到更严重的问题。尽管在某些情况下这可能会有所不同,但是许多应用程序(可能是大多数)都在计算机上运行,如果您将JSON,简单文本或记录记录到数据库中,那么这些应用程序根本就没有关系。在大多数情况下,对象,字符串和其他转换都必须进行(除非您记录原始二进制文件?),也许您看不到它,因为您使用在后台处理它的默认类(例如,如果您写入数据库)。
如果需要对此进行性能评估,则需要在要运行代码的计算机上以及日常使用的编程环境中进行评估。开销很大还是根本取决于很多事情。例如,如果您使用Ruby on Rails编写网站,则在大多数情况下,您的数据都是哈希值,将其转换为JSON几乎不需要花钱,因为内部表示形式与您要编写的内容相差无几(这很典型)使Rails代码始终可以抛出此类对象和数据结构)。
优势再次取决于您的工具。如果您的库中内置了JSON,则可以轻松阅读并以某种形式显示。再次作为示例:假设您拥有网站的管理界面,并且想要显示一些存储在JSON中的日志记录信息,则在某些情况下,您可以在一行代码中读取并显示为Ruby中的HTML。