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
)。