侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux logger命令教程:如何记录和发送系统日志(附实例详解和注意事项)

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在每条消息中添加进程IDlogger -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指定远程日志服务器的端口号,默认为514logger -P 1234 -n 192.168.1.100 "This is a message to remote server with port 1234"
-u指定本地日志服务器的套接字文件,默认为/dev/loglogger -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打印相关的消息
mail邮件相关的消息
news新闻相关的消息
syslog系统日志相关的消息
user用户相关的消息
uucpUUCP相关的消息
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

你可以检查远程日志服务器的配置和网络状况,确保它们可以正常工作。

0

评论区