ログファイルに何かを記録する簡単なテストアプリケーションを作成しました。私は使っている 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;
}
Ubuntuマシンでは、/var/log/syslog
で出力を確認できます。
RHEL/CentOSマシンでは、出力は/var/log/messages
にあります。
これはrsyslog
サービスによって制御されるため、何らかの理由でこれが無効になっている場合は、systemctl start rsyslog
で開始する必要があります。
他の人が述べたように、syslog()
出力は/var/log/syslog
ファイルによって記録されます。
システム、ユーザー、その他のログは/var/log
で確認できます。
詳細については、ここに 興味深いリンク があります。
デフォルトのログの場所(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
受け入れられた答えに加えて、次のことを知っておくと便利です...
これらの各機能には、手動ページが関連付けられている必要があります。
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);
直接的な答えではありませんが、うまくいけば、これが役立つと思います。
どの情報をログに記録し、どこに配置するかをシステムに伝える必要があります。ロギングは/etc/rsyslog.conf
ファイルで設定され、rsyslogを再起動して新しい設定をロードします。通常、デフォルトのロギングルールは/etc/rsyslog.d/50-default.conf
ファイルにあります。
syslog()は、syslogdによって配布されるログメッセージを生成します。
Syslogdを構成するファイルは/etc/syslog.confです。このファイルは、メッセージがログに記録される場所を示します。
このファイルのオプションを変更するには?ここに行きます http://www.bo.infn.it/alice/alice-doc/mll-doc/duix/admgde/node74.html
Linuxではロギングは非常に構成可能であり、/etc/syslog.conf
(またはおそらく/etc/rsyslog.d/
の下)を調べたい場合があります。詳細は、ロギングサブシステムとディストリビューションに依存します。
/var/log/
の下のファイルも調べてください(カーネルログの場合はおそらくdmesg
を実行してください)。