如何使apache以JSON而不是默认的日志记录格式输出其日志?

时间:2016-09-20 11:25:59

标签: json apache logging

我需要在自定义GUI上显示日志文件中的统计信息。日志文件应该是巨大的,因此手动解析它们将是过度的。但是,如果有一种方法可以用JSON而不是简单文本输出日志,那么可以节省大量时间。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:7)

我是这样做的,我是从互联网上的某个地方学到的,

对于错误日志:

self.webView.isOpaque = false;
self.webView.backgroundColor = UIColor.clear

对于Accesslog:

ErrorLogFormat "{ \"time\":\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\", \"function\" : \"[%-m:%l]\" , \"process\" : \"[pid %P:tid %T]\" , \"message\" : \"%M\" ,\ \"referer\"\ : \"%{Referer}i\" },"

添加一些新变量时要小心,一个小错误会阻止你的apache实例在尝试之前调用并备份http.conf。

答案 1 :(得分:0)

ErrorLogFormat对我不起作用-我不确定这是否是因为我正在使用Apache V2.4。我最终得到了以下格式:

ErrorLogFormat "{ \"time\":\"%{cu}tZ\", \"function\" : \"[%-m:%l]\" , \"process\" : \"[pid %P:tid %T]\" , \"message\" : \"%M\"}"

我从文档中找到了格式代码 (https://httpd.apache.org/docs/2.4/mod/core.html#errorlogformat

LogFormat如上所述:

LogFormat "{ \"time\":\"%{%Y-%m-%dT%T}t.%{usec_frac}t%{%z}t\", \"remoteIP\":\"%a\", \"host\":\"%V\", \"requestPath\":\"%U\", \"query\":\"%q\", \"method\":\"%m\", \"status\":\"%>s\", \"userAgent\":\"%{User-agent}i\", \"referer\":\"%{Referer}i\" }" json

哪个记录在模块中(与错误日志格式相反,该错误日志格式记录在核心中,因为它不是模块)