web-dev-qa-db-ja.com

Linuxは私のsyslogをどこに保存しますか?

ログファイルに何かを記録する簡単なテストアプリケーションを作成しました。私は使っている 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;
}
66
opc0de

Ubuntuマシンでは、/var/log/syslogで出力を確認できます。

RHEL/CentOSマシンでは、出力は/var/log/messagesにあります。

これはrsyslogサービスによって制御されるため、何らかの理由でこれが無効になっている場合は、systemctl start rsyslogで開始する必要があります。

他の人が述べたように、syslog()出力は/var/log/syslogファイルによって記録されます。
システム、ユーザー、その他のログは/var/logで確認できます。

詳細については、ここに 興味深いリンク があります。

58
TheCottonSilk

デフォルトのログの場所(rhel)は

一般的なメッセージ:

/var/log/messages

認証メッセージ:

/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 simplified approach.
*.*                                     /var/log/messages
19
rkosegi

受け入れられた答えに加えて、次のことを知っておくと便利です...

これらの各機能には、手動ページが関連付けられている必要があります。

man -k syslog(manページのキーワード検索)を実行すると、syslogを参照する、または関連するmanページのリストが表示されます。

$ 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ページからの抜粋で、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);

直接的な答えではありませんが、うまくいけば、これが役立つと思います。

19
Rob Kielty

どの情報をログに記録し、どこに配置するかをシステムに伝える必要があります。ロギングは/etc/rsyslog.confファイルで設定され、rsyslogを再起動して新しい設定をロードします。通常、デフォルトのロギングルールは/etc/rsyslog.d/50-default.confファイルにあります。

8
david tooke

syslog()は、syslogdによって配布されるログメッセージを生成します。

Syslogdを構成するファイルは/etc/syslog.confです。このファイルは、メッセージがログに記録される場所を示します。

このファイルのオプションを変更するには?ここに行きます http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html

4
Clément

Linuxではロギングは非常に構成可能であり、/etc/syslog.conf(またはおそらく/etc/rsyslog.d/の下)を調べたい場合があります。詳細は、ロギングサブシステムとディストリビューションに依存します。

/var/log/の下のファイルも調べてください(カーネルログの場合はおそらくdmesgを実行してください)。