温馨提示×

ubuntu syslog怎样转格式

小樊
37
2026-09-08 02:56:22
栏目: 智能运维

在 Ubuntu 里,“syslog 转格式”通常是指在 rsyslog / syslog-ngjournald 环境下,把日志从默认格式转换成你想要的格式(比如 JSON、CSV、自定义模板等)。下面按常见场景说明。


一、Ubuntu 默认日志系统情况

  • Ubuntu 16.04+:默认使用 systemd-journald + rsyslog
  • 日志来源:
    • /var/log/syslog(rsyslog 文本格式)
    • journalctl(二进制)

二、rsyslog 转格式(最常用)

1️⃣ 使用 rsyslog 模板(Template)

示例:转成 JSON 格式

编辑配置文件:

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":"..."}

2️⃣ 转成 CSV 格式

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")

三、journald → 文本 / JSON 格式

1️⃣ journalctl 导出 JSON

journalctl -o json
journalctl -o json-pretty
journalctl -u nginx -o json

保存:

journalctl -o json > syslog.json

2️⃣ journalctl 支持的输出格式

journalctl -o help

常见:

  • short
  • verbose
  • json
  • json-pretty
  • cat

四、已有 syslog 文件转格式(离线处理)

1️⃣ 用 jq 处理(如果已经是 JSON)

cat /var/log/syslog.json | jq .

2️⃣ 用 Python 解析传统 syslog

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

如果你能具体说:

  • ✅ 是 实时 还是 历史日志
  • ✅ 想转成 JSON / CSV / 自定义
  • ✅ 是否用于 ELK / Loki / 数据库

我可以给你一份可直接用的配置

0