Linux logger命令介绍
logger(log generator)是一个用来向系统日志服务器发送消息的命令,它可以用来记录一些用户自定义的事件或信息,比如系统启动、关机、登录、注销、运行某个程序等。logger命令可以指定消息的优先级、设备、标签、进程ID等,以便于日志的分类和过滤。logger命令也可以从标准输入或文件中读取消息,并将其发送到日志服务器。
Linux logger命令适用的Linux版本
logger命令是一个标准的Linux命令,它适用于大多数的Linux发行版,比如Ubuntu、Debian、Fedora、CentOS等。如果你的Linux系统没有安装logger命令,你可以使用以下命令来安装:
- 对于基于Debian的系统,如Ubuntu,你可以使用apt-get命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install bsdutils
- 对于基于Red Hat的系统,如Fedora,你可以使用dnf命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux
- 对于基于Red Hat的系统,如CentOS 7,你可以使用yum命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux
- 对于基于Red Hat的系统,如CentOS 8,你可以使用dnf命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux
Linux logger命令的基本语法
logger命令的基本语法格式如下:
logger [选项] [消息]
如果没有指定消息,logger命令会从标准输入或文件中读取消息。如果没有指定选项,logger命令会使用默认的优先级、设备、标签等。
Linux logger命令的常用选项或参数说明
logger命令有很多选项或参数,可以用来控制消息的格式和发送方式。下表列出了一些常用的选项或参数,以及它们的含义和示例。
选项或参数 | 含义 | 示例 |
---|---|---|
-i | 在每条消息中添加进程ID | logger -i "This is a test message" |
-p | 指定消息的优先级,格式为设备.级别 | logger -p user.info "This is an info message" |
-t | 指定消息的标签,通常是程序的名称 | logger -t myapp "This is a message from my app" |
-s | 将消息同时输出到标准错误 | logger -s "This is a message to stderr" |
-f | 从指定的文件中读取消息 | logger -f /tmp/log.txt |
-n | 指定远程日志服务器的主机名或IP地址 | logger -n 192.168.1.100 "This is a message to remote server" |
-P | 指定远程日志服务器的端口号,默认为514 | logger -P 1234 -n 192.168.1.100 "This is a message to remote server with port 1234" |
-u | 指定本地日志服务器的套接字文件,默认为/dev/log | logger -u /var/run/syslog "This is a message to local server with socket file" |
Linux logger命令的实例
下面是一些使用logger命令的实例,你可以根据自己的需要来修改或尝试。
实例1:使用默认设置发送消息
如果你不指定任何选项或参数,logger命令会使用默认的设置来发送消息,比如优先级为user.notice,设备为user,标签为你的用户名,进程ID为不显示。你可以使用以下命令来发送一条消息:
[linux@bashcommandnotfound.cn ~]$ logger "Hello, world!"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux user: linux: Hello, world!
实例2:指定消息的优先级
你可以使用-p选项来指定消息的优先级,格式为设备.级别。设备可以是以下之一:
设备 | 含义 |
---|---|
auth | 认证和安全相关的消息 |
authpriv | 认证和安全相关的私有消息 |
cron | 定时任务相关的消息 |
daemon | 后台进程相关的消息 |
kern | 内核相关的消息 |
lpr | 打印相关的消息 |
邮件相关的消息 | |
news | 新闻相关的消息 |
syslog | 系统日志相关的消息 |
user | 用户相关的消息 |
uucp | UUCP相关的消息 |
local0 ~ local7 | 本地使用的消息 |
级别可以是以下之一,从高到低排序:
级别 | 含义 |
---|---|
emerg | 紧急情况,系统无法使用 |
alert | 必须立即采取行动的情况 |
crit | 严重的情况 |
err | 错误的情况 |
warning | 警告的情况 |
notice | 正常但值得注意的情况 |
info | 信息性的消息 |
debug | 调试的消息 |
你可以使用以下命令来发送一条优先级为kern.crit的消息:
[linux@bashcommandnotfound.cn ~]$ logger -p kern.crit "Kernel panic!"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/kern.log
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux kernel: linux: Kernel panic!
实例3:指定消息的标签
你可以使用-t选项来指定消息的标签,通常是程序的名称。这样可以方便你区分不同的消息来源。你可以使用以下命令来发送一条标签为myapp的消息:
[linux@bashcommandnotfound.cn ~]$ logger -t myapp "This is a message from my app"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux myapp: This is a message from my app
实例4:添加进程ID
你可以使用-i选项来在每条消息中添加进程ID,这样可以方便你追踪不同的进程发送的消息。你可以使用以下命令来发送一条带有进程ID的消息:
[linux@bashcommandnotfound.cn ~]$ logger -i "This is a message with PID"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux linux[1234]: This is a message with PID
其中1234是进程ID,它会根据实际情况而变化。
实例5:将消息同时输出到标准错误
你可以使用-s选项来将消息同时输出到标准错误,这样可以方便你在终端中查看消息。你可以使用以下命令来发送一条同时输出到标准错误的消息:
[linux@bashcommandnotfound.cn ~]$ logger -s "This is a message to stderr"
你应该能看到类似以下的输出:
This is a message to stderr
Dec 27 15:08:50 linux linux: This is a message to stderr
你可以看到,消息既输出到了标准错误,也发送到了系统日志。
实例6:从文件中读取消息
你可以使用-f选项来从指定的文件中读取消息,并将其发送到系统日志。你可以使用以下命令来创建一个包含消息的文件:
[linux@bashcommandnotfound.cn ~]$ echo "This is a message from file" > /tmp/log.txt
然后,你可以使用以下命令来从文件中读取消息,并发送到系统日志:
[linux@bashcommandnotfound.cn ~]$ logger -f /tmp/log.txt
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux linux: This is a message from file
实例7:发送消息到远程日志服务器
你可以使用-n选项来指定远程日志服务器的主机名或IP地址,以及-P选项来指定远程日志服务器的端口号,默认为514。你需要确保远程日志服务器已经开启了接收消息的功能,以及你的网络可以正常访问远程日志服务器。你可以使用以下命令来发送一条消息到远程日志服务器:
[linux@bashcommandnotfound.cn ~]$ logger -n 192.168.1.100 "This is a message to remote server"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ ssh 192.168.1.100 tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux linux: This is a message to remote server
你也可以指定远程日志服务器的端口号,比如1234,你可以使用以下命令来发送一条消息到远程日志服务器的指定端口:
[linux@bashcommandnotfound.cn ~]$ logger -P 1234 -n 192.168.1.100 "This is a message to remote server with port 1234"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ ssh 192.168.1.100 tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux linux: This is a message to remote server with port 1234
实例8:从标准输入读取消息
你可以使用logger命令来从标准输入读取消息,并将其发送到系统日志。你可以使用以下命令来开始输入消息:
[linux@bashcommandnotfound.cn ~]$ logger
然后,你可以在终端中输入你想要发送的消息,每输入一行,就按下回车键,消息就会被发送到系统日志。你可以使用Ctrl + D来结束输入。例如,你可以输入以下的消息:
This is a message from stdin
Another message from stdin
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux linux: This is a message from stdin
Dec 27 15:08:51 linux linux: Another message from stdin
实例9:指定本地日志服务器的套接字文件
你可以使用-u选项来指定本地日志服务器的套接字文件,默认为/dev/log。如果你的系统日志服务使用了不同的套接字文件,你可以使用这个选项来指定它。你可以使用以下命令来发送一条消息到本地日志服务器的指定套接字文件:
[linux@bashcommandnotfound.cn ~]$ logger -u /var/run/syslog "This is a message to local server with socket file"
你可以使用以下命令来查看消息是否发送成功:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/syslog
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux linux: This is a message to local server with socket file
实例10:使用不同的选项和参数组合
你可以使用不同的选项和参数来组合发送消息,以满足你的不同需求。例如,你可以使用以下命令来发送一条优先级为mail.debug,标签为myapp,带有进程ID,同时输出到标准错误,从文件中读取,到远程日志服务器的消息:
[linux@bashcommandnotfound.cn ~]$ logger -p mail.debug -t myapp -i -s -f /tmp/log.txt -n 192.168.1.100
你应该能看到类似以下的输出:
This is a message from file
Dec 27 15:08:50 linux myapp[1234]: This is a message from file
你可以使用以下命令来查看本地日志服务器的消息:
[linux@bashcommandnotfound.cn ~]$ tail /var/log/mail.log
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux myapp[1234]: This is a message from file
你可以使用以下命令来查看远程日志服务器的消息:
[linux@bashcommandnotfound.cn ~]$ ssh 192.168.1.100 tail /var/log/mail.log
你应该能看到类似以下的输出:
Dec 27 15:08:50 linux myapp[1234]: This is a message from file
Linux logger命令的注意事项
在使用logger命令时,你需要注意以下几点:
- 如果你的系统没有安装logger命令,你会看到类似以下的错误提示:
bash: logger: command not found
你可以按照上面的方法来安装logger命令,不同的Linux发行版可能有不同的安装命令。
- 如果你的系统没有启动系统日志服务,你会看到类似以下的错误提示:
logger: socket /dev/log: No such file or directory
你可以使用以下命令来启动系统日志服务,不同的Linux发行版可能有不同的服务名称:
[linux@bashcommandnotfound.cn ~]$ sudo systemctl start syslog
- 如果你的远程日志服务器没有开启接收消息的功能,或者你的网络无法访问远程日志服务器,你会看到类似以下的错误提示:
logger: socket /dev/log: Connection refused
你可以检查远程日志服务器的配置和网络状况,确保它们可以正常工作。
评论区