linux在哪里存储我的系统日志?

我写了一个简单的testing应用程序来logging日志文件中的东西。 我正在使用Linux mint ,在执行应用程序之后,我尝试使用以下命令查看日志:

tail -n 100 /var/log/messages 

但文件消息不存在既没有testing或什么。 下面你可以find我的代码。 也许我做错了什么,该文件没有存储在那里,或者我需要在linux mint中启用日志logging。

 #include <stdio.h> #include <stdlib.h> #include <syslog.h> void init_log() { setlogmask(LOG_UPTO(LOG_NOTICE)); openlog("testd",LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1); } int main(void) { init_log(); printf("Session started!"); syslog(LOG_NOTICE, "Session started!!"); closelog(); return EXIT_SUCCESS; } 

在我的Ubuntu机器上,我可以在/var/log/syslog看到输出。

正如其他人所指出的,你的syslog()输出将被/var/log/syslog文件logging下来。
您可以在/var/log看到系统,用户和其他/var/log

更多细节:这里有一个有趣的链接 。

除了被接受的答案之外,知道以下内容是有用的…

每个function都应该有与之相关的手册页

如果运行man -k syslog (手册页的关键字search),您将得到一个引用或关于系统日志的手册页列表

 $ man -k syslog logger (1) - a shell command interface to the syslog(3) system l... rsyslog.conf (5) - rsyslogd(8) configuration file rsyslogd (8) - reliable and extended syslogd syslog (2) - read and/or clear kernel message ring buffer; set c... syslog (3) - send messages to the system logger vsyslog (3) - send messages to the system logger 

您需要了解手册部分以深入研究。

下面是man的man page的一个摘录,它解释了man page部分:

 The table below shows the section numbers of the manual followed by the types of pages they contain. 1 Executable programs or shell commands 2 System calls (functions provided by the kernel) 3 Library calls (functions within program libraries) 4 Special files (usually found in /dev) 5 File formats and conventions eg /etc/passwd 6 Games 7 Miscellaneous (including macro packages and conven‐ tions), eg man(7), groff(7) 8 System administration commands (usually only for root) 9 Kernel routines [Non standard] 

阅读上面的运行

 $man man 

所以,如果你运行man 3 syslog你会得到一个你在代码中调用的syslog函数的完整手册页。

 SYSLOG(3) Linux Programmer's Manual SYSLOG(3) NAME closelog, openlog, syslog, vsyslog - send messages to the system logger SYNOPSIS #include <syslog.h> void openlog(const char *ident, int option, int facility); void syslog(int priority, const char *format, ...); void closelog(void); #include <stdarg.h> void vsyslog(int priority, const char *format, va_list ap); 

不是一个直接的答案,但希望你会发现这个有用的。

默认日志位置(rhel)是

一般信息:

 /var/log/messages 

authentication信息:

 /var/log/secure 

邮件事件:

 /var/log/maillog 

检查你的/etc/syslog.conf(或者/etc/syslog-ng.conf取决于你已经安装了哪个syslog工具)

例:

 $ cat /etc/syslog.conf # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none /var/log/messages # The authpriv file has restricted access. authpriv.* /var/log/secure # Log all the mail messages in one place. mail.* /var/log/maillog #For a start, use this simplifed approach. *.* /var/log/messages 

您必须告诉系统logging哪些信息以及将信息放在哪里。 日志loggingconfiguration在cat /etc/rsyslog.conf文件中,重新启动rsyslog来加载新的configuration。 默认的日志logging规则通常在文件/etc/rsyslog.d/50-default.conf中。

syslog()生成一条日志消息,由syslogd分发。

configurationsyslogd的文件是/etc/syslog.conf。 这个文件会告诉你在哪里logging消息。

如何更改此文件中的选项? 在这里,你去http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html

日志logging在Linux中是非常易于configuration的,您可能需要查看/etc/syslog.conf (或者在/etc/rsyslog.d/下)。 详细信息取决于日志子系统和分发。

还可以查看/var/log/下的文件(也可以为内核日志运行dmesg )。