如何在Linux上的Bash中检查syslog?


86

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

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

在Linux中,我们如何检查日志?


该功能是否不会syslog 写入系统日志?(除非您在谈论用于访问内核消息环形缓冲区的较低级别的缓冲区,但我怀疑url是一个int。)
Cascabel,2011年

2
这个Q应该迁移到unix.SE.com,不确定是否值得标记mod的注意力(我标记了)。
亚历山大·马拉霍夫

Answers:


128

怎么less /var/log/syslog


1
@kern:您使用的是哪个Linux发行版和版本?
NPE

6
@kern:检查您的内容/etc/syslog.conf
NPE

25
tail -f /var/log/syslog非常好,因为它显示进入syslog时的最新输出。如果您尝试对现场问题进行故障排除,而不是仔细查看过去的内容,则可能会很有用。
counterbeing

16
实际上是CentO的/etc/rsyslog.conf
Roman Goyenko 2014年

1
@ArunprasadRajkumar另一种方法是避免将本应由普通用户读取的消息记录到syslog中
Dmitry Grigoryev

41

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


我已经在openSUSE上对其进行了检查,并注意到它也适用于它。感谢分享!
silvioprog

23

默认情况下,它已登录到系统日志/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和dtrussUnix上),例如:

sudo strace -fp $(cat /var/run/syslogd.pid)

22

一个很酷的工具是journalctl

例如,要向控制台显示syslog:,您journalctl -t <syslog-ident>在其中<syslog-ident>赋予openlog初始化syslog函数的身份。


14

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


2

如果您喜欢Vim,则它具有syslog文件的内置语法突出显示功能,例如,它将以红色突出显示错误消息。

vi +'syntax on' /var/log/syslog

-10

在华硕路由器上,可以通过

:/bin# busybox

还有其他与之相关的命令。


这完全是题外话,请从答案中将其删除。
成龙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.