logger是Linux和Unix操作系统中使用的命令行工具,用于将日志添加到本地 /var/log/syslog
文件或远程系统日志服务器。logger为添加日志提供了不同的选项,如设置优先级、指定远程系统或显式定义Syslog端口。
记录器帮助和用法信息
logger命令默认安装在大多数Linux发行版中。所以没有必要显式安装它。我们可以打印帮助和使用信息 -h
选项如下。logger命令最常用的选项将与一些描述一起列出。
$ logger -h

或者,要获得更详细的帮助和用法信息,我们可以查看并使用logger命令的手册页,如下所示。
$ man logger

记录器命令语法
logger命令的语法很简单,首先提供选项,然后是要发送Syslog的日志或消息。
logger OPTIONS LOG
- `OPTIONS`是一个或多个选项,用于设置某些属性,如远程服务器、端口、日志设施等。
- `LOG`是我们要添加或发送的日志消息。用双引号括起来会使它更可靠。
Linux系统日志
Syslog机制是Linux日志的重要组成部分。大多数Linux发行版,如Ubuntu、Debian、CentOS、Mint、RedHat、Suse,都将日志文件存储在 /var/log
目录。此目录下有不同类型的日志,如auth、MySQL、apache等。Syslog是一个通用日志文件,系统用于存储与系统、服务等相关的日志 syslog
可以使用下面的tail命令查看文件。
$ tail /var/log/syslog

从Syslog打印日志
在开始向syslog文件添加日志之前,打印当前syslog文件将非常有益。我们可以使用不同的命令来打印syslog文件。 tail
用于打印给定文件的最后10行的命令。或者,我们可以提供要显式打印的行数。在下面的示例中,我们将从 /var/log/syslog
. 我们将使用 -n
选项以指定行计数。
$ tail -n 30 /var/log/syslog
向Syslog文件添加日志
让我们从logger命令的一个简单示例开始。我们将只向syslog文件添加一行,而不向logger命令提供任何选项。在下面的示例中,我们将向syslog文件中添加行“This just a simple log line”。然后我们将使用tail命令列出。
$ logger "This is just a simple log line"

我们可以看到日志被添加到底部列出的文件的末尾。下面还有一些关于日志的信息。
- `Feb 26 01:20:47`是日志添加到syslog文件时的时间戳或日期信息。
- `poftut com`是系统的名称。
- `ismail`是用户名或记录器名称。
相关文章: Linux尾部命令教程
指定日志优先级或设施
通常,日志由创建日志的资源确定优先级。这也称为用于对日志进行分类的工具。我们可以使用 -p
或 --priority
长格式选项。如果我们不提供贷款的优先权,则默认优先权为 user.notice
. 在下面的示例中,我们将lof优先级设置为 local3.info
.
$ logger -p "local3.info" "This is just a simple log line"
指定远程系统日志服务器IP地址
默认情况下,logger命令将把给定的logline放入本地系统 /var/log/syslog
文件。但情况并非总是如此。在企业环境中,应该在中央日志服务器中收集和管理日志。我们可以使用logger命令通过提供IP地址或主机名将给定的日志发送到远程服务器。我们将使用 -n
或 --server
选项发送远程日志服务器。
$ logger -n 192.168.1.10 "This is just a simple log line"
使用TCP作为系统日志协议
Syslog默认使用UDP协议。UDP提供了更快、更低的资源和更容易的日志文件传输。但是UDP不能提供完全可靠的TCP接口。我们可以使用 -T
或 --tcp
选项。
$ logger -n 192.168.1.10 -T "This is just a simple log line"
指定远程Syslog服务器端口号
当从本地向远程系统发送日志时,对于UDP和TCP协议,系统日志的默认端口都是514。我们可以使用 -P
或 --port
通过提供端口号进行选择。
$ logger -n 192.168.1.10 -P 1514 "This is just a simple log line"
将命令输出重定向为日志
Linux提供了许多工具,可以精确地记录它们的操作。我们可以使用logger命令将这些命令作为日志输出。e将只使用bashshell backticks来包围命令。下面我们将记录命令 who
进入系统日志。
$ logger `who`

syslog的最后一行提供who命令的输出,其中包含用户名、控制台号和当前登录用户的日期。
相关文章: 如何在Linux中排除Grep?
记录指定文件
我们可以将文本文件内容逐行放入syslog文件中。我们将使用 -f
选项并提供要记录的文件。在本例中,我们将记录名为 hostnames
.
$ logger -f hostnames

设置或限制日志大小
日志用于创建简单信息。因此,当有些行包含大量数据时,应该对它们进行转换或设置限制。我们可以使用 --size
选项和要设置的字符数。在下面的示例中,我们将计数或限制设置为10。
$ logger --size 10 123456789012345678901234567

忽略空白或空行
从文件中读取日志行时,可能有一些空行或空行。日志空或空行效率不高,因此我们可以忽略空白行或空行。 -e
选项如下。
$ logger -e -f hostnames