2

アプリケーションの printf ログ メッセージを /var/log/messages に渡したいです。カーネル デバッグ メッセージは /var/log/messages に表示される可能性があるため、アプリケーションの printf ログ メッセージを /var/log/messages に渡す方法がわかりません。誰でもこれを行う方法を教えてください。

4

1 に答える 1

3

たとえば、次のように変更します。

printf("The error was %s\n", strerror(errno));

に:

syslog(LOG_ERR, "The error was %s", strerror(errno));

syslog は、常に一度に 1 行ずつ送信されることに注意してください (必要はありません\n)。

ロギング オプションをより詳細に制御するopenlog()には、 への呼び出しの前に関数を使用しますsyslog()。詳細については、openlog の man ページを参照してください。

syslog は、メッセージの優先度syslog(LOG_ERR上記のサンプルの最初の引数) とファシリティに基づいてメッセージをルーティングします。ファシリティは への呼び出しで設定されるopenlog()か、デフォルトで に設定されLOG_USERます。syslog 構成ファイルの基本的な構文は、次の形式の行です。

selector[;selector]     destination

セレクターは次のとおりです。

facility[,facility].priority

(ファシリティおよび/または優先度はワイルドカードにすることができます*)。優先度には、より高い優先度がすべて暗黙的に含まれます。

宛先は、ファイル、リモートホスト、プログラム、またはユーザー (のリスト) です。いくつかの例:

*.*                   ihateyou             -- every message sent to this user
*.debug               *                    -- to every logged in user!
*.emerg               root,bob,tom         -- emergencies to these three
*.err                 /var/log/all-errors  -- all LOG_ERR and above to this file
cron.info             |/some/program       -- pipe these to /some/program
user.*                @some.host.com       -- send these to this host
cron,user.crit        /this/file           -- an example with multiple facilities
lpr.err;ftp.warn      /other/file          -- an example with multiple selectors

追加のオプションがいくつかある場合があります (たとえば、優先度としての「なし」、=warn のような特定の優先度、および !=warn のような否定)。それらの詳細については、syslog.conf のマンページを参照してください。

システムが syslog メッセージをルーティングする方法については、syslog 構成ファイル (通常は /etc/syslog.conf) を参照してください。注: 一部のシステムでは、nsyslogまたはのような syslog のバリアントを実行しrsyslogます。これらにはより多くのオプションがあるため、構成ファイルがより複雑になる可能性があります。

既知のファシリティは、LOG_AUTH、LOG_AUTHPRIV、LOG_CRON、LOG_DAEMON、LOG_FTP、LOG_KERN、LOCAL_LOCAL0 .. LOG_LOCAL7、LOG_LPR、LOG_MAIL、LOG_NEWS、LOG_SYSLOG、LOG_USER、LOG_UUCP です。(LOG_KERN はユーザー プロセスでは使用できません) 通常、LOG_DAEMON、LOG_LOCAL n、または LOG_USER のいずれかが最適な選択です。

既知の優先度 (重大度とも呼ばれます) は、(高いものから低いものへ) LOG_EMERG、LOG_ALERT、LOG_CRIT、LOG_ERR、LOG_WARNING、LOG_NOTICE、LOG_INFO、LOG_DEBUG です。

于 2015-12-17T22:20:07.310 に答える