有没有办法从 json 格式在一行中制作系统日志?

Posted

技术标签:

【中文标题】有没有办法从 json 格式在一行中制作系统日志?【英文标题】:is there any way to make syslog in one row from json-format? 【发布时间】:2020-09-24 18:38:03 【问题描述】:

我是日志新手。 有没有办法在一行中制作系统日志? 它在 info.log 中具有 json 格式,但我需要使其在 syslog 中更具可读性(用于谷歌云日志记录)。 我使用 cakephp v2.1。现在的样子:

[SYSLOG] : info: Array
[SYSLOG] : info: (
[SYSLOG] : info:     [Message] => Array
[SYSLOG] : info:         (
[SYSLOG] : info:             [user_id] => 1321
[SYSLOG] : info:             [ip] => 172.10.1.1
[SYSLOG] : info:             [user_agent] => Mozilla/5.0 (Macintosh.... etc) 
[SYSLOG] : info:         )
[SYSLOG] : info: 
[SYSLOG] : info: )

这是来自 bootstrap.php 的配置

CakeLog::config('default', [
    'engine' => 'SyslogLog',
    'types' => array('info', 'error', 'warning'),
]);

我想怎么看

[SYSLOG] : info: Array([Message] => Array([user_id] => 1321[ip] => 172.10.1.1[user_agent] => Mozilla/5.0 (Macintosh.... etc)))

也许 Google Cloud Logging 中有一些工具可以解决这个问题?谢谢

【问题讨论】:

【参考方案1】:

我修复了它,只是改变了发送它的功能。

过得怎么样:

$this->log($log, 'info');

我是如何改变的:

$this->log(json_encode($log), 'info');

附:有时简单是最好的解决方案

【讨论】:

以上是关于有没有办法从 json 格式在一行中制作系统日志?的主要内容,如果未能解决你的问题,请参考以下文章

Git 日志输出到 XML、JSON 还是 YAML?

有没有办法向 GCP 提供记录 JSON 有效负载的数据,以便它从有效负载中获取级别和时间戳?

有没有办法将 json 对象转换为 json l 文件

在寻呼机“少”中打破 JSON

从.NET Core 3.1(Docker)迁移后,.NET 6 应用程序日志为 JSON 格式 [重复]

Logback JsonLayout 在同一行打印所有日志