GNU/Linux >> Linux の 問題 >  >> Linux

ログファイルを作る

C プログラムからログを記録する標準的な方法は syslog です .

ヘッダー ファイルを含めることから始めます。

#include <syslog.h>

次に、プログラムの早い段階で、openlog を呼び出して syslog を構成する必要があります。 :

openlog("programname", 0, LOG_USER);

最初の引数は、各メッセージの開始時に自動的に追加される ID またはタグです。ここにプログラムの名前を入力してください。

2 番目の引数は、使用するオプション、または 0 です。 正常な動作のために。オプションの完全なリストは man 3 syslog にあります . LOG_PID が役に立つかもしれません 、これにより、syslog もログ メッセージにプロセス ID を記録します。

次に、ログ メッセージを書きたいときは毎回 syslog を呼び出します。 :

syslog(LOG_INFO, "%s", "Message");

最初の引数は優先順位です。優先度は DEBUG から (重要でない) EMERG まで (緊急時のみ) DEBUG 付き 、 INFO 、および ERR 最も一般的に使用されています。 man 3 syslog を参照 あなたのオプションのために。

2 番目と 3 番目の引数は、printf と同様に、フォーマットとメッセージです。

これが表示されるログ ファイルは、syslog の設定によって異なります。

デフォルトの設定では、おそらく /var/log/messages に入ります .

LOG_LOCAL0 の範囲内のいずれかの機能を使用して、カスタム ログ ファイルを設定できます。 LOG_LOCAL7 へ .

以下を変更して使用します:

openlog("programname", 0, LOG_USER);

openlog("programname", 0, LOG_LOCAL0);

または

openlog("programname", 0, LOG_LOCAL1);

など

対応するエントリを /etc/syslog.conf に追加します 、例

local1.info /var/log/programname.log

syslog サーバーを再起動します。例:

pkill -HUP syslogd

.info local1.info の一部 上記は INFO であるすべてのメッセージを意味します INFO を含む、またはそれ以上の重要なものがログに記録されます 、 NOTICEERR (エラー)、CRIT (クリティカル) など、ただし DEBUG 以外 .

または、rsyslog がある場合 、プロパティ ベースのフィルタを試すことができます。たとえば、

:syslogtag, isequal, "programname:"    /var/log/programname.log

syslogtag には「:」を含める必要があります。

または、ソフトウェアを他の人に配布する予定がある場合は、LOG_LOCAL の使用に頼るのはおそらく得策ではありません。 または rsyslog フィルタします。

その場合、 LOG_USER を使用する必要があります (通常のプログラムの場合) または LOG_DAEMON (サーバーの場合) syslog を使用して起動メッセージとエラー メッセージを記述します。 、ただし、すべてのログ メッセージを syslog 以外のファイルに書き込みます .たとえば、Apache HTTPd は /var/log/apache2/* にログを記録します または /var/log/httpd/* 、通常の open を使用していると仮定します /fopen そして write /printf


あなたは #include <syslog.h> したくなるでしょう 、次に syslog() を使用します アクティブなシステム ロギング プログラムにデータを送信する機能。

こちらのマニュアル ページを参照してください。


Linux
  1. ログファイルに何が追加されているかをリアルタイムで確認する便利な方法は何ですか?

  2. Firefoxのログファイルを見つけますか?

  3. Linuxでログファイルを空にする方法

  1. nethogs の出力をログ ファイルにキャプチャする

  2. 正しいユーザーとして ssh ログインする方法は?

  3. ファイルを変更不可にするにはどうすればよいですか?

  1. `cut`でファイルを変更しますか?

  2. Linux – Syslog.confファイルを設定して、Iptablesメッセージを別のファイルに記録する方法は?

  3. ファイルを変更しているプロセスを見つける