CNode

日志输出json,是否应该缩进??

问答
Wwencan发布于11 年前最后回复11 年前4 回复5044 浏览0 收藏

RT

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

查看回复

回复 (4)

H
hinson0#1·11 年前

我们也有这样的问题 提供我们现在项目的解决方案。你可以参考下; 我们的日志也是通过一个日志系统将线上的日志拉到开发机。拉过来后也是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

L
leapon#2·11 年前

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

W
wencan#4·11 年前

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

参与回复
登录后即可参与回复。登录