日志输出json,是否应该缩进??
发布于 9 年前 作者 wencan 4598 次浏览 最后一次编辑是 8 年前 来自 问答

RT

不缩进,不方便阅读 缩进,grep只输出单行

4 回复

我们也有这样的问题 提供我们现在项目的解决方案。你可以参考下; 我们的日志也是通过一个日志系统将线上的日志拉到开发机。拉过来后也是json的;为了输出方便,我们单独写了一个命令来输出友好的日志格式;

原格式是这样的:{“hello”: “world”, “nihao”: “shijie”}

命令行使用:tail -f xxx.log | grep ‘key’ | pj

输出后的格式是这样的: @hello: world @nihao:shijie

命令代码如下:

#!/usr/bin/env php 
<?php
$fp=fopen('php://stdin','r');
$content='';
$args = isset($argv[1])?$argv[1]:0;
if($fp){
    while($line=fgets($fp)){
    $res = json_decode($line,true);
    if($args){
        //print_r("\033[0;0;32m".$res[$args]."\033[0m\n");
        echo "\n";
        print_r($res[$args]);
        echo "\n\n";

    }else{
        foreach($res as $k =>$v){
        echo "\033[0;0;32m".str_pad($k,10," ")." \033[0m"."\033[0;0;33m $v \033[0m \n";
        }   
        echo "\n\n";
    }   

    }   
    fclose($fp);
}


pj的意思是: php json。好囧的取名。 具体的效果图看我的 github

感觉日志单行好些。便于日志分析。grep 查找的话,后面可以对 JSON format 一下

@hinson0 谢谢你的回复 我有空用node写个玩玩

@hinson0 异常信息呢?? 那可不是json

回到顶部