

ログとは,Linuxの動作状況をログファイルとして記憶しておく仕組みです。システム上の不具合や,セキュリティの脅威に対処するために必要な情報として利用されます。ログはsyslogデーモンによって記録される場合と,ソフトウェア自身が記録をする場合の2つがあります。
ソフトウェア自身が記録を持つものとして,WebサーバのApacheなどがあります。Apacheは,記録形式などをユーザーが設定することも可能です。その場合には,ログ記録を行うプログラムをソフトウェア自身が持たなくてはなりません。
Linuxでは,システムの基本動作に関するログを/var/logディレクトリの中に種類別にいくつかのファイルに分けて記録されています。これらのファイルを参照すればシステムの状態やさまざまなエラーなどの警告を見ることができます。
ログの最新情報を見る場合,tailコマンドを使うと便利です。ログは,既存のファイルの末尾に情報を追加していくので,ファイルのあとほど最新のログが記述されています。tailコマンドを用いると,末尾数行(デフォルトでは10行)のログだけを見ることができます。
●ログの最新部分を表示する
$ tail /var/log/messages
↑
/var/log/messagesファイルの中に一般的なログが保存されています
●ログをリアルタイムに表示する
$ tail -f /var/log/messages
tailコマンドに-fオプションをつけて実行すると,末尾数行のログとともにリアルタイムで発生したログも確認することができます。
ログは,出力先ファイルファイルなどをユーザー自身がカスタマイズすることもできます。/etc/syslog.confファイルに各サービスごとに出力先ファイルや出力するログのレベルを設定することができます。syslogサービスは,各種ソフトウェアからのログ情報をまとめて出力するサービスです。
sysylogはファシリティとプライオリティという2つの指標でログの情報を分類しています。ファシリティはログの種類を示します。プライオリティはログの重要度・緊急性を示します。
代表的なファシリティ
| authpriv | 認証やセキュリティに関するログ |
| cron | cronサービスに関するログ |
| daemon | 各種デーモンに関するログ |
| kern | カーネルから出力されるログ |
| lpr | 印刷サービスから出力されるログ |
| メールサービスから出力されるログ | |
| syslog | syslog自体が内部的に出力するログ |
代表的なプライオリティ
| emerg(panic) | カーネルパニックなどシステム全体が機能不全に陥るようなエラー |
| alert | ファイルシステムが破壊されるなど早急に修復すべきエラー |
| crit | ハードウェアトラブルなどの致命的なエラー |
| err(error) | 一般的なエラー |
| warn(warning) | 軽度の問題に関する通知 |
| notice | エラーではない状態に関する通知 |
| info | 一般的な情報 |
| debug | アプリケーションのデバックメッセージ |
| none | 出力なし |
ログの出力の設定は上記のファシリティ,プライオリティごとに行うことが可能です。
●/etc/syslog.confに出力方法を指定する
$ vi /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
:
mail.warn /var/log/mail_error.log
↑ ↑
<ファシリティ>.<プライオリティ>
<ファシリティ>.<プライオリティ> 出力ファイル
Apacheのログは,webサイトの不具合や不審なアクセスをみつけたりすることができます。Apacheが残すログにはいくつかの種類があります。その中で,Apacheのログとして代表的なアクセスログとエラーログについて解説します。
アクセスログは,Cookieの値や時間といったさまざまな情報について,どのように記録するか設定できます。ログの書式は「LogFormat」ディレクトリで設定します。書式を記録するログファイルは「CustomLog」ディレクトリで設定します。
●LogFormatの設定例
LogFormat "%t" time
とすれば,書式の名前が「time」で,記録するのはアクセスの時刻「%t」となります。
●CustomLogの設定例
CustomLog /usr/local/apache/logs/time_log time
とすれば,書式名「time」のログを「time_log」というファイル名で記録すると設定したことになります。
アクセスログを使うと,自分の使いやすい書式でログを記録することができます。
エラーログは,リクエストの結果がエラーになったものだけが記録されています。アクセスログと違い,エラーログは記録するエラーだけを設定します。
エラーログの設定で必要になるディレクティブは,「ErrorLog」と「LogLevel」の2つです。ErrorLogディレクティブはログファイルの位置と名称を指定します。LogLevelディレクティブは記録するログのレベルを指定します。エラーログのレベルの設定は,ログのプライオリティを同じです。
●LogLevelの設定例
LogLevel notice
notice以上のエラー(emerg?notice)を記録します。一般的に,運用状態にあるサーバでは「notice」か「warn」を指定します。テスト状態であれば,「info」や「debug」を指定することが多いようです。
●ErrorLogの設定例
エラーは,/usr/local/apache/logsに表示されます。
ErrorLog /usr/local/apache/logs/error_log
※エラーのあったリクエストを記録するエラーログファイルのパスを設定