文章目錄
- 一、基礎語法
- 二、核心功能選項
- 三、?設施與優先級對照?
- 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
)