参考资料
目录
- [一. 简介](#一. 简介)
- [二. 最基本的用法](#二. 最基本的用法)
- [三. 配置项参数](#三. 配置项参数)
-
- [3.1 `-p` 日志优先级](#3.1
-p日志优先级) -
- [3.1.1 设施(Facility)类型](#3.1.1 设施(Facility)类型)
- [3.1.2 日志级别(Level)](#3.1.2 日志级别(Level))
- [3.1.3 常见的`-p`用法对照](#3.1.3 常见的
-p用法对照) - [3.1.4 实践](#3.1.4 实践)
- [3.2 `-t` 或 `--tag` 日志标签](#3.2
-t或--tag日志标签) - [3.3 `-s` 同时将消息输出到终端显示](#3.3
-s同时将消息输出到终端显示)
- [3.1 `-p` 日志优先级](#3.1
- [四. 小案例](#四. 小案例)
一. 简介
logger 是 Linux / Unix 系统中用于向系统日志写入日志的命令行工具,本质上是 syslog / journald 的命令行接口。
常用于 脚本、cron、systemd 服务 中记录运行信息。
🔷常用的配置项参数
| 选项 | 说明 |
|---|---|
-p, --priority <优先级> |
指定日志优先级(facility.level) |
-t, --tag <标签> |
使用指定标签标记日志条目 |
-i, --id |
在每行日志中包含进程ID |
-f, --file <文件> |
从指定文件读取日志内容 |
-s, --stderr |
同时将日志输出到标准错误 |
-n, --server <主机> |
将日志发送到远程 syslog 服务器 |
-P, --port <端口> |
指定远程 syslog 服务器端口 |
-u, --socket <套接字> |
指定 Unix 域套接字而非默认设备 |
-d, --udp |
使用 UDP 协议发送日志(默认) |
-T, --tcp |
使用 TCP 协议发送日志 |
-h, --help |
显示帮助信息 |
-V, --version |
显示版本信息 |
二. 最基本的用法
- 使用
logger命令向系统日志中写入数据,然后就可以使用journalctl命令检索到写入的数据
bash
apluser@ubuntu24-01:~$ logger "Hello World 1"
apluser@ubuntu24-01:~$
apluser@ubuntu24-01:~$ echo "Hello World 2" | logger
apluser@ubuntu24-01:~$
apluser@ubuntu24-01:~$ journalctl | grep Hello
Dec 30 21:12:56 ubuntu24-01 apluser[98065]: Hello World 1
Dec 30 21:13:10 ubuntu24-01 apluser[98067]: Hello World 2
三. 配置项参数
3.1 -p 日志优先级
⏹日志优先级由 facility(设施)和 level(级别)两部分组成,格式为 facility.level。
3.1.1 设施(Facility)类型
| 设施代码 | 数字 | 说明 |
|---|---|---|
| user | 1 | 用户级消息(默认) |
| auth | 4 | 安全/授权消息 |
| daemon | 3 | 系统守护进程 |
| cron | 9 | 定时任务守护进程 |
| syslog | 5 | syslogd 内部消息 |
| authpriv | 10 | 私有授权消息 |
| kern | 0 | 内核消息 |
| lpr | 6 | 打印系统 |
| 2 | 邮件系统 | |
| news | 7 | 新闻系统 |
| local0-7 | 16 ~ 23 | 自定义本地使用 |
3.1.2 日志级别(Level)
| 级别代码 | 说明 | 数值 |
|---|---|---|
| emerg | 系统不可用 | 0 |
| alert | 需要立即采取行动 | 1 |
| crit | 关键条件 | 2 |
| err | 错误条件 | 3 |
| warning | 警告条件 | 4 |
| notice | 正常但重要的情况 | 5 |
| info | 信息性消息 | 6 |
| debug | 调试级消息 | 7 |
3.1.3 常见的-p用法对照
| 需求 | 正确写法 |
|---|---|
| info 及以上(更严重) | -p info |
| 只看 info | -p info..info |
| warning 及以上 | -p warning |
| err 到 alert | -p err..alert |
| debug 全部 | -p debug |
3.1.4 实践
⏹写入内容到系统日志中
bash
apluser@ubuntu24-01:~$ logger -p user.err "something wrong"
apluser@ubuntu24-01:~$ logger -p auth.err "something wrong"
apluser@ubuntu24-01:~$ logger -p user.err "something wrong1"
apluser@ubuntu24-01:~$ logger -p auth.err "something wrong2"
apluser@ubuntu24-01:~$ logger -p auth.info "something wrong2"
apluser@ubuntu24-01:~$ logger -p user.info "something wrong3"
- 查看今天的设施(Facility)为
user,并且日志级别(Level)为info以及以上,
可以看到,不仅info级别的log可以被检索到,error级别的log也一样被检索到。
bash
apluser@ubuntu24-01:~$ journalctl SYSLOG_FACILITY=1 -p info --since today
Dec 31 08:33:30 ubuntu24-01 apluser[99836]: something wrong
Dec 31 08:56:59 ubuntu24-01 apluser[100183]: something wrong1
Dec 31 08:59:08 ubuntu24-01 apluser[100210]: something wrong3
- 只检索今天的设施(Facility)为
user,并且日志级别(Level)为info的log。
bash
apluser@ubuntu24-01:~$ journalctl SYSLOG_FACILITY=1 -p info..info --since today
Dec 31 08:59:08 ubuntu24-01 apluser[100210]: something wrong3
- 只检索今天的设施(Facility)为
auth,并且日志级别(Level)为err的log。
bash
apluser@ubuntu24-01:~$ journalctl SYSLOG_FACILITY=4 -p err..err --since today
Dec 31 08:33:39 ubuntu24-01 apluser[99837]: something wrong
Dec 31 08:56:59 ubuntu24-01 apluser[100184]: something wrong2
3.2 -t 或 --tag 日志标签
⏹带着标签将指定内容写入到日志之后,journalctl命令可使用-t配置项进行检索。
bash
apluser@ubuntu24-01:~$ logger -t mpl_tag "task finished1"
apluser@ubuntu24-01:~$
apluser@ubuntu24-01:~$ logger -t mpl_tag "task finished2"
apluser@ubuntu24-01:~$
apluser@ubuntu24-01:~$ journalctl -t mpl_tag
Dec 31 09:11:36 ubuntu24-01 mpl_tag[100375]: task finished1
Dec 31 09:11:42 ubuntu24-01 mpl_tag[100380]: task finished2
3.3 -s 同时将消息输出到终端显示
bash
apluser@ubuntu24-01:~$ logger -t mpl_tag -s "task finished3"
<13>Dec 31 09:22:20 mpl_tag: task finished3
apluser@ubuntu24-01:~$
apluser@ubuntu24-01:~$ journalctl -t mpl_tag
Dec 31 09:11:36 ubuntu24-01 mpl_tag[100375]: task finished1
Dec 31 09:11:42 ubuntu24-01 mpl_tag[100380]: task finished2
Dec 31 09:22:20 ubuntu24-01 mpl_tag[100515]: task finished3
四. 小案例
⏹Bash 脚本记录执行过程
bash
#!/bin/bash
TAG="backup"
logger -t "$TAG" "backup started"
if cp -r /data /backup; then
logger -t "$TAG" "backup success"
else
logger -p user.err -t "$TAG" "backup failed"
fi
⏹cron 任务日志
bash
0 2 * * * /path/script.sh 2>&1 | logger -t cron-backup