在 Ubuntu 里,“syslog 转格式”通常是指在 rsyslog / syslog-ng 或 journald 环境下,把日志从默认格式转换成你想要的格式(比如 JSON、CSV、自定义模板等)。下面按常见场景说明。
/var/log/syslog(rsyslog 文本格式)journalctl(二进制)编辑配置文件:
sudo vim /etc/rsyslog.d/10-json.conf
内容:
template(name="JsonFormat" type="list") {
constant(value="{")
constant(value="\"timestamp\":\"") property(name="timereported" dateFormat="rfc3339")
constant(value="\",\"host\":\"") property(name="hostname")
constant(value="\",\"facility\":\"") property(name="syslogfacility-text")
constant(value="\",\"severity\":\"") property(name="syslogseverity-text")
constant(value="\",\"tag\":\"") property(name="syslogtag")
constant(value="\",\"msg\":\"") property(name="msg")
constant(value="\"}")
}
*.* action(type="omfile" file="/var/log/syslog.json" template="JsonFormat")
重启:
sudo systemctl restart rsyslog
结果示例:
{"timestamp":"2026-01-15T10:00:00+08:00","host":"ubuntu","facility":"kern","severity":"info","tag":"kernel:","msg":"..."}
template(name="CsvFormat" type="string"
string="%timereported%,%hostname%,%syslogfacility-text%,%syslogseverity-text%,%syslogtag%,%msg%\n")
*.* action(type="omfile" file="/var/log/syslog.csv" template="CsvFormat")
journalctl -o json
journalctl -o json-pretty
journalctl -u nginx -o json
保存:
journalctl -o json > syslog.json
journalctl -o help
常见:
shortverbosejsonjson-prettycatjq 处理(如果已经是 JSON)cat /var/log/syslog.json | jq .
import re
pattern = r'(\w+ \d+ \d+:\d+:\d+) (\S+) (\S+): (.*)'
with open('/var/log/syslog') as f:
for line in f:
m = re.match(pattern, line)
if m:
print({
"time": m.group(1),
"host": m.group(2),
"tag": m.group(3),
"msg": m.group(4)
})
| 需求 | 推荐方式 |
|---|---|
| 实时 JSON 日志 | rsyslog template |
| 容器 / ELK | JSON + Filebeat |
| 审计 / 分析 | journalctl -o json |
| 老日志转换 | Python / awk |
如果你能具体说:
我可以给你一份可直接用的配置。