87

ログファイルに何かを記録するための簡単なテストアプリケーションを作成しました。私はlinuxmintを使用しており、アプリケーションの実行後、次のコマンドを使用してログを表示しようとしています。

tail -n 100 /var/log/messages

しかし、ファイルメッセージはテストされたものでも何かでも存在しません。以下に私のコードがあります。何か間違ったことをしている、ファイルがそこに保存されていない、またはlinuxmintでログを有効にする必要があるかもしれません。

#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;
}
4

7 に答える 7

86

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

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

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

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

詳細については、こちらの興味深いリンクをご覧ください。

于 2012-06-11T12:06:01.470 に答える
24

デフォルトのログの場所(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
于 2012-06-11T12:00:51.443 に答える
24

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

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

man -k syslog(manページのキーワード検索)を実行すると、syslogを参照している、または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ページからの抜粋です。

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

直接的な答えではありませんが、これがお役に立てば幸いです。

于 2012-06-11T12:01:14.560 に答える
9

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

于 2014-07-09T14:13:09.963 に答える
4

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

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

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

于 2012-06-11T11:57:08.273 に答える
4

ロギングはLinuxで非常に構成可能であり、自分の/etc/syslog.conf(またはおそらく下の/etc/rsyslog.d/)を調べたいと思うかもしれません。詳細は、ロギングサブシステムとディストリビューションによって異なります。

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

于 2012-06-11T13:04:13.193 に答える
1

私はUbuntuをWSL(Windows Subsystem for Linux)で実行systemctl start rsyslogしていますが、機能しませんでした。

だから私がしたことはこれです:

$ service rsyslog start

syslogこれでファイルはに表示されます/var/log/

于 2019-12-03T23:36:10.217 に答える