温馨提示×

linux日志格式如何修改

小樊
35
2026-10-26 00:18:47
栏目: 智能运维

在 Linux 里,“日志格式”通常指 系统日志(rsyslog / syslog / journald) 或 应用日志(如 Nginx、自定义程序) 的格式。下面按常见场景说明如何修改。


一、修改系统日志格式(rsyslog)

1. 找到配置文件

/etc/rsyslog.conf
/etc/rsyslog.d/*.conf

2. 修改日志模板(Template)

rsyslog 使用 template 定义格式。

示例:自定义传统格式

template(name="MyFormat" type="string"
  string="%timereported% %HOSTNAME% %syslogtag% %msg%\n"
)

应用模板:

*.* /var/log/all.log;MyFormat

3. 常见字段

  • %timereported%:时间戳
  • %HOSTNAME%:主机名
  • %syslogtag%:程序名
  • %msg%:日志内容
  • %pri%:优先级

修改后重启:

systemctl restart rsyslog

二、systemd-journald 日志格式

journald 不支持自定义文本格式,但可控制输出方式:

journalctl -o json
journalctl -o short
journalctl -o verbose

配置文件:

/etc/systemd/journald.conf

可改:

Storage=persistent
MaxRetentionSec=2week

三、Nginx 日志格式修改

1. 修改 nginx.conf

http {
    log_format myfmt '$remote_addr - $time_local "$request" '
                     '$status $body_bytes_sent "$http_referer"';

    access_log /var/log/nginx/access.log myfmt;
}

2. 重新加载

nginx -t
systemctl reload nginx

四、应用自定义日志格式(Python 示例)

import logging

logging.basicConfig(
    format='%(asctime)s [%(levelname)s] %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

五、常见需求对照

需求 方法
改时间格式 rsyslog template / datefmt
加主机名 %HOSTNAME%
JSON 日志 rsyslog template + json
分隔符改逗号 自定义 template

如果你能告诉我:

  • 用的是 哪个系统/服务
  • 想改成 什么格式

我可以直接给你一份可复制的配置。

0 踩