我从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());
});
我正在使用monolog从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 monolog格式化程序:
$formatter = new \Monolog\Formatter\JsonFormatter();
$streamHandler = new \Monolog\Handler\StreamHandler('php://stdout', \Monolog\Logger::DEBUG);
$streamHandler->setFormatter($formatter);
$log->pushHandler($streamHandler);
2- Php的日志级别不同,如何检查节点中的日志级别,我可以在stdout中格式化消息并获取日志级别。
\"level_name\":\"ERROR\
”。
所以我会找到“错误”字符串
3-我如何在node和php中的日志级别之间适应。
如果我的节点日志级别为“错误”,则由于我的代码无法打印标准输出日志。 "this.logger.error()"
。我需要比动态编码日志更动态的东西
答案 0 :(得分:0)
对于我的第二个问题,我找到了解决方案:如果我将PHP日志作为JSON字符串获取,则只能使用stdout中的以下内容:
var phplog = JSON.parse(data);
console.log(phplog.level_name)
// will print ERROR