在 Linux 下写“syslog 脚本”,通常有两种常见含义,我先帮你区分一下,然后分别说明怎么做。
向 syslog 写日志的脚本
用 shell / Python 等脚本,把程序运行信息记录到系统日志(如 /var/log/messages、/var/log/syslog)。
处理 syslog 的脚本(日志分析 / 转发)
编写脚本读取 syslog 内容,做分析、报警、归档等。
下面分别讲。
logger 命令(最简单)logger 是 syslog 的命令行工具。
#!/bin/bash
logger -t myscript "脚本开始执行"
logger -t myscript -p user.info "这是信息日志"
logger -t myscript -p user.err "发生错误!"
echo "日志已写入 syslog"
查看日志:
tail -f /var/log/syslog
# 或
journalctl -t myscript
参数说明:
-t:标签(TAG)-p:优先级(facility.level)
user.infouser.errlocal0.warnsyslog 模块import syslog
syslog.openlog(ident="mypython", logoption=syslog.LOG_PID)
syslog.syslog(syslog.LOG_INFO, "Python 脚本启动")
syslog.syslog(syslog.LOG_ERR, "出错了")
查看:
journalctl -t mypython
#include <syslog.h>
int main() {
openlog("myc", LOG_PID, LOG_USER);
syslog(LOG_INFO, "Hello syslog");
closelog();
}
#!/bin/bash
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
或 Python:
with open("/var/log/auth.log") as f:
for line in f:
if "Failed password" in line:
print(line)
编辑:
/etc/rsyslog.conf
示例:
local0.* /var/log/myscript.log
重载:
systemctl restart rsyslog
脚本中:
logger -t myscript -p local0.info "测试"
✅ 使用 logger 写日志
✅ 区分日志级别(info / warn / err)
✅ 不要直接写 /var/log 文件
✅ 用 journalctl 查看 systemd 日志
如果你能告诉我:
我可以给你更具体的模板。