105

在 C 中,我们以这种方式记录:

syslog( LOG_INFO, "proxying %s", url );

在 Linux 中我们如何查看日志?

4

7 回答 7

166

怎么样less /var/log/syslog

于 2011-05-20T15:50:32.057 回答
43

在 Fedora 19 上,答案似乎是/var/log/messages. 虽然检查/etc/rsyslog.conf它是否已更改。

于 2013-07-09T19:02:59.727 回答
33

默认情况下,它会在 登录到系统日志/var/log/syslog,因此可以通过以下方式读取:

tail -f /var/log/syslog

如果该文件不存在,请检查/etc/syslog.conf以查看 syslogd 的配置文件。请注意,配置文件可能不同,因此请检查正在运行的进程是否使用不同的文件:

# ps wuax | grep syslog
root      /sbin/syslogd -f /etc/syslog-knoppix.conf

注意:在某些发行版(例如 Knoppix)中,所有记录的消息都可以发送到不同的终端(例如/dev/tty12),因此要访问例如tty12尝试按Control+ Alt+ F12

您还可以使用lsof工具找出syslogd进程正在使用的日志文件,例如

sudo lsof -p $(pgrep syslog) | grep log$ 

要将测试消息发送到 shell 中的 syslogd,您可以尝试:

echo test | logger

对于故障排除使用跟踪工具(strace在 Linux 上,dtruss在 Unix 上),例如:

sudo strace -fp $(cat /var/run/syslogd.pid)
于 2014-10-08T17:27:32.427 回答
25

一个非常酷的工具是journalctl.

例如,要向控制台显示 syslog:,您为初始化 syslog的函数提供的身份journalctl -t <syslog-ident>在哪里。<syslog-ident>openlog

于 2018-04-30T12:47:19.483 回答
15

tail -f /var/log/syslog | grep process_nameprocess_name我们感兴趣的进程的名称在 哪里

于 2013-12-16T07:59:29.170 回答
3

如果你喜欢 Vim,它有内置的 syslog 文件语法高亮,例如它会用红色高亮错误信息。

vi +'syntax on' /var/log/syslog
于 2020-01-31T01:22:10.847 回答
1

在某些 Linux 系统(例如 Debian 和 Ubuntu)上,系统日志每天轮换一次,并且您有多个日志文件,其中两个最新文件未压缩而旧文件被压缩:

$ ls -l /var/log/syslog*
-rw-r----- 1 root adm  888238 Aug 25 12:02 /var/log/syslog
-rw-r----- 1 root adm 1438588 Aug 25 00:05 /var/log/syslog.1
-rw-r----- 1 root adm   95161 Aug 24 00:07 /var/log/syslog.2.gz
-rw-r----- 1 root adm  103829 Aug 23 00:08 /var/log/syslog.3.gz
-rw-r----- 1 root adm   82679 Aug 22 00:06 /var/log/syslog.4.gz
-rw-r----- 1 root adm  270313 Aug 21 00:10 /var/log/syslog.5.gz
-rw-r----- 1 root adm  110724 Aug 20 00:09 /var/log/syslog.6.gz
-rw-r----- 1 root adm  178880 Aug 19 00:08 /var/log/syslog.7.gz

要搜索所有 syslog 文件,您可以使用以下命令:

$ sudo zcat -f `ls -tr /var/log/syslog*` | grep -i error | less

其中zcat首先解压缩并打印所有 syslog 文件(最旧的在前),grep进行搜索,而less对搜索结果进行分页。

要执行相同的操作,但使用以 syslog 文件名称为前缀的行,您可以使用zgrep

$ sudo zgrep -i error `ls -tr /var/log/syslog*` | less

$ zgrep -V | grep zgrep
zgrep (gzip) 1.6

如果普通用户无法读取 syslog 文件,则在这两种情况下都需要sudo 。

于 2021-08-25T10:47:03.773 回答