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

ker*_*ern 65 linux bash syslog

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

syslog( LOG_INFO, "proxying %s", url );
Run Code Online (Sandbox Code Playgroud)

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

NPE*_*NPE 98

怎么样less /var/log/syslog

  • `tail -f/var/log/syslog`非常好,因为它显示了进入syslog的最新输出.如果您尝试对现场活动进行故障排除,而不是查看过去严格的内容,这可能很有用. (22认同)
  • 它实际上是CentOs的/etc/rsyslog.conf (14认同)
  • @kern:查看`/ etc/syslog.conf`的内容 (6认同)

Hac*_*eur 38

在Fedora 19上,看起来答案是肯定的/var/log/messages.虽然检查/etc/rsyslog.conf它是否已被更改.


ken*_*orb 18

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

tail -f /var/log/syslog
Run Code Online (Sandbox Code Playgroud)

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

# ps wuax | grep syslog
root      /sbin/syslogd -f /etc/syslog-knoppix.conf
Run Code Online (Sandbox Code Playgroud)

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

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

sudo lsof -p $(pgrep syslog) | grep log$ 
Run Code Online (Sandbox Code Playgroud)

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

echo test | logger
Run Code Online (Sandbox Code Playgroud)

要进行故障排除,请使用跟踪工具(strace在Linux上,dtruss在Unix上),例如:

sudo strace -fp $(cat /var/run/syslogd.pid)
Run Code Online (Sandbox Code Playgroud)


小智 14

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


小智 13

一个非常酷的工具journalctl.

例如,要将syslog显示到console :,您为函数初始化syslog的身份journalctl -t <syslog-ident>在哪里.<syslog-ident>openlog