温馨提示×

linux syslog怎样写脚本

小樊
47
2026-09-23 00:32:06
栏目: 智能运维

在 Linux 里,syslog 本身不是“写脚本”的对象,通常是:

  1. 写脚本,然后把日志通过 syslog 记录下来
  2. 写脚本,分析 / 处理 syslog 产生的日志文件
  3. 配置 rsyslog / syslog-ng 规则(不是 shell 脚本,是配置)

下面分几种常见场景给你讲。


一、在脚本里写 syslog(最常用)

1️⃣ 用 logger 命令(推荐)

logger 是专门往 syslog 写日志的工具。

#!/bin/bash

logger -p local0.info -t myscript "脚本开始执行"

echo "做点事情..."

logger -p local0.err -t myscript "发生错误了"

参数说明:

  • -p:优先级(facility.level)
    • 常见:user.info, local0.warning, local0.err
  • -t:tag(日志里会显示)
  • 默认写到 /var/log/messages 或 journald

2️⃣ 指定日志文件(rsyslog 配合)

rsyslog 配置:

# /etc/rsyslog.d/myscript.conf
local0.*    /var/log/myscript.log

重启 rsyslog:

systemctl restart rsyslog

脚本:

logger -p local0.info -t myscript "hello syslog"

日志就会进:

/var/log/myscript.log

二、脚本读取 syslog 日志

1️⃣ 读日志文件

#!/bin/bash

LOG=/var/log/myscript.log

grep "ERROR" $LOG | mail -s "错误告警" admin@example.com

2️⃣ 用 journalctl(systemd 系统)

journalctl -t myscript --since "1 hour ago"

脚本示例:

#!/bin/bash

count=$(journalctl -t myscript --since "10 min ago" | grep -c "ERROR")

if [ "$count" -gt 0 ]; then
    echo "发现 $count 个错误"
fi

三、syslog 触发脚本(高级)

⚠️ 不推荐新手用,容易出问题

rsyslog + 触发脚本

# /etc/rsyslog.d/trigger.conf
local0.err    ^/usr/local/bin/alert.sh

alert.sh:

#!/bin/bash
read msg
echo "$msg" | mail -s "Syslog Alert" admin@example.com

四、常见 facility / level 速查

Facility:

  • user
  • local0 ~ local7
  • auth, cron, daemon

Level(低→高):

debug < info < notice < warning < err < crit < alert < emerg

五、最小可用示例(推荐你先试)

#!/bin/bash
logger -p local0.info -t test "hello syslog"
# /etc/rsyslog.d/test.conf
local0.* /var/log/test.log
systemctl restart rsyslog
cat /var/log/test.log

如果你能告诉我:

  • 用的是 CentOS / Ubuntu / 容器
  • 是想 写日志 / 分析日志 / 告警
  • 是否用 systemd

我可以直接给你一套可跑的脚本。

0 踩