2012-06-11 75 views
43

我寫了一個簡單的測試應用程序來記錄日誌文件中的東西。我使用Linux Mint的和應用程序執行後,我嘗試使用這個命令來查看日誌:linux在哪裏存儲我的系統日誌?

tail -n 100 /var/log/messages 

但該文件的消息不存在,沒有測試什麼的。下面你可以找到我的代碼。也許我做錯了什麼,該文件沒有存儲在那裏,或者我需要在linux mint中啓用日誌記錄。

#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; 
} 
+0

這取決於您使用的系統記錄器。它應該在'/ etc /'某處有一個配置文件,你必須改變你的標識符(在你的情況下是''test'')和設施。 –

回答

38

在我的Ubuntu機器上,我可以看到輸出爲/var/log/syslog

正如其他人所指出的,您的syslog()輸出將由/var/log/syslog文件記錄。
您可以在/var/log處看到系統,用戶和其他日誌。

欲瞭解更多詳情:這是interesting link

+0

另請參閱: http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch05_:_Troubleshooting_Linux_with_syslog#.Uy_0VvmSwep – AjayKumarBasuthkar

13

默認日誌位置(RHEL)是

一般信息:

/var/log/messages 

驗證消息:

/var/log/secure 

郵件事件:

/var/log/maillog 

檢查/etc/syslog.conf文件(或/etc/syslog-ng.conf這取決於其syslog設備的已instaled)

例子:

$ 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 
18

除了接受回答,知道以下內容很有用...

這些功能中的每一個都應該有手冊頁與它們相關聯。

如果運行man -k syslog(關鍵字搜索手冊頁),您將得到引用,或即將的syslog

$ 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的手冊頁的摘錄,那說明手冊頁部分:

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), e.g. 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); 

不是一個直接的答案,但希望你會發現這個有用的。

4

日誌記錄在Linux中是非常易於配置的,您可能需要查看您的/etc/syslog.conf(或者可能在/etc/rsyslog.d/下)。詳細信息取決於日誌子系統和分發。

看看/var/log/(也許運行dmesg內核日誌)的文件。

6

您必須告訴系統記錄哪些信息以及將信息放在哪裏。在cat /etc/rsyslog.conf文件中配置日誌記錄,重新啓動rsyslog以加載新配置。默認日誌記錄規則通常位於文件/etc/rsyslog.d/50-default.conf中。

相關問題