文章目录
- 一、基础语法
- 二、核心功能选项
- 三、设施与优先级对照
- 1. 常用设施(Facility)
- 2. 优先级(Priority)从低到高:
- 3. 组合示例
- 四、典型使用场景
- 1. 记录简单消息
- 2. 带标签和优先级
- 3. 记录命令输出
- 4. 发送到远程服务器
- 5. 脚本中的错误处理
- 五、日志查看方法
- 六、注意事项
- 1. 权限要求:
- 2. 性能影响:
- 3. 优先级策略:
- 七、高级技巧
- 1. 结构化日志:
- 2.多行日志:
- 3. 自动清理:
以下是
Linux
中
logger
命令的详解和使用指南:
一、基础语法
logger [选项] [消息内容]
二、核心功能选项
选项 | 描述 | 示例 |
---|---|---|
-t TAG | 指定日志标签 | logger -t “MyApp” “Process started” |
-p PRIORITY | 指定设施和优先级(facility.level) | logger -p local0.err “Error occurred” |
-i | 记录进程ID(PID) | logger -i “Service shutdown” |
-s | 同时输出到终端和系统日志 | logger -s “Debug info” |
-f FILE | 读取文件内容作为日志消息 | logger -f /tmp/error.log |
-n HOST | 发送日志到远程syslog服务器 | logger -n 192.168.1.100 “Remote log” |
-P PORT | 指定远程服务器端口(默认514) | logger -n 192.168.1.100 -P 10514 |
-d | 使用UDP协议发送(默认) | logger -d -n 192.168.1.100 |
-T | 使用TCP协议发送 | logger -T -n 192.168.1.100 |
三、设施与优先级对照
1. 常用设施(Facility)
kern, user, mail, daemon, auth, syslog, lpr, news, uucp, cron, authpriv, ftp, local0-local7
2. 优先级(Priority)从低到高:
debug, info, notice, warning, err, crit, alert, emerg
3. 组合示例
-p local3.warning
表示使用 local3
设施 + warning
级别
四、典型使用场景
1. 记录简单消息
logger "Backup job completed" # 默认使用user.notice级别
2. 带标签和优先级
logger -t "Security" -p auth.warning "非法登录尝试 detected"
3. 记录命令输出
df -h | logger -t "DiskMonitor" -p local0.info
4. 发送到远程服务器
logger -n logs.example.com -P 5140 -T "重要事件记录"
5. 脚本中的错误处理
#!/bin/bash
if [ ! -f "/data/config.yaml" ]; thenlogger -t "InitScript" -p local0.err "配置文件缺失,退出代码127"exit 127
fi
五、日志查看方法
# Systemd 系统
journalctl -t "MyApp" --since "10 minutes ago"# 传统系统
tail -f /var/log/syslog | grep "YourTag"
grep "CRITICAL" /var/log/messages
六、注意事项
1. 权限要求:
- 发送到
auth/authpriv
设施需要root
权限 - 远程日志需配置目标服务器的
/etc/rsyslog.conf
2. 性能影响:
- 频繁调用可能产生
IO
压力,批量日志建议优先写入本地文件
3. 优先级策略:
- 生产环境避免滥用
debug
级别(可通过-p
过滤)
七、高级技巧
1. 结构化日志:
logger -t "API" "status_code=403 client_ip=172.16.1.2 path=/admin"
2.多行日志:
logger -t "Kernel" "$(dmesg | tail -n 5)"
3. 自动清理:
# 按时间清理旧日志
journalctl --vacuum-time=7d
更多信息建议通过 man logger
查看完整手册,不同发行版可能有细微差异(如 BSD
系支持 -u
指定 socket
)