0

我从 node.js 调用的 PHP 是:

const process = exec('php ' + phpScriptPath, (err, phpResponse, stderr) => {

            if (err){
                this.logger.error('failed:' , err);
            }
        });

        process.stdout.on('data', (data) => {
            this.logger.info(data.toString());
        });

我使用独白从 PHP 脚本发送日志,如下所示

日志如下所示:

{"name":"node","environment":"development","hostname":"local","level":50,"msg":"{\"message\":\"log message\",\"context\":{\"error\":\"error message\"},\"level\":400,\"level_name\":\"ERROR\",\"extra\":[]}\n","time":"2019-05-05T06:38:26.147Z","v":0}

使用 Bunyan ,如何格式化此消息以使其更具可读性

PHP 独白格式化程序:

 $formatter = new \Monolog\Formatter\JsonFormatter();
        $streamHandler = new \Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::DEBUG);
        $streamHandler->setFormatter($formatter);
        $log->pushHandler($streamHandler);

2- Php 有不同级别的日志,我如何检查节点中的日志级别,我可以在标准输出中格式化消息并获取日志级别。

\"level_name\":\"ERROR\" . 例如,我会找到 "ERROR" 字符串

3-如何适应节点和 php 中的日志级别。如果我的节点日志级别是“错误”,我将无法打印标准输出日志,因为我的代码是。"this.logger.error()". 我需要一些比硬编码日志更动态的东西

4

1 回答 1

0

好的,我的第二个问题我找到了解决方案:如果我将 PHP 日志作为 JSON 字符串,我可以使用标准输出中的以下内容:

 var phplog = JSON.parse(data);
 console.log(phplog.level_name)
// will print ERROR
于 2019-05-05T06:55:27.723 回答