[これは、systemdシステムでjournaldが広く採用される数年前に書かれたもので、触れていません。現在(2018年後半)journaldと(r)syslogの両方(以下で説明)がDebianなどのディストリビューションで使用されています。他のシステムでは、rsyslogを一緒に使用する場合はインストールする必要がありますが、journaldとの統合は簡単です。]
トピックは一般的にLinux向けに標準化されているため、ubuntuに関してロギングについては特に説明しませんそのために私の言葉を取る)。また、この質問に答える以外に、「ログの読み方」についてはあまり語りません。
人間が読みやすいように書かれているのか、それとも一般に他のツールで評価されて使用されているのかという仮定は正しいのでしょうか?
私はそれはアプリケーションに依存すると思いますが、一般的には、少なくともsyslog(下記参照)に入るものに関しては、人間が読めるものでなければなりません。「私にとって意味のある」は別の問題です、笑。ただし、特定の目的のために標準ツール(grep、awkなど)で構文解析を容易にする方法で構造化することもできます。
誰でも、最初に、独自のロギングを行うアプリケーションとシステムロガーを使用するアプリケーションには違いがあります。Apacheはデフォルトで前者ですが、後者を実行するように設定できます(ほとんどの人は望ましくないと思うでしょう)。独自のロギングを行うアプリケーションは、ファイルの任意の場所を使用して任意の方法でこれを行うことができるため、それについて述べることはあまりありません。システムロガーは、一般にと呼ばれsyslog
ます。
syslog
「Syslog」は、実際にはsyslogd(dはデーモン用です!)と呼ばれるデーモンプロセスで実装される標準です。Linuxで現在使用されている主なsyslogデーモン(ubuntuを含む)はです。Rsyslogdは多くのことを実行できますが、ほとんどのディストリビューションですぐに設定できるように、従来のsyslogをエミュレートします。あなたにはそのためのドキュメントを見つけるかもしれない(そこにもある、注意してください、それはこのようなソースパッケージからわずかの通知だと)。そこにある場合はhtmlですが、Stack Exchangeはローカルファイルリンクの埋め込みを許可しません。rsyslogd
/var/log
/usr/share/doc/rsyslog-doc-[version]
/usr/share/doc/rsyslog-[version]
NEWS
ChangeLog
file://usr/share/doc/rsyslog-doc/index.html
それをコピーしてみてください。存在しない場合は、インストールされていない別のパッケージの一部である可能性があります。パッケージングシステムに問い合わせます(例:)apt-cache search rsyslog | grep doc
。
構成はにあります/etc/rsyslog.conf
。これにはman rsyslog.conf
マニュアルページがありますが、マニュアルページは詳細なリファレンスを提供しますが、導入としてはあまり浸透できない可能性があります。幸い、ストックrsyslog.confの基本は、従来のsyslog.confの基本に準拠しており、多くの紹介やチュートリアルがあります。 これは、たとえば、ローカルのrsyslog.confをじっくり見ながら、そこから取り去りたいのは、機能と優先順位を理解することです(「優先順位」はログレベルと呼ばれることもあります))、これらは前述のsyslog標準の一部であるため。この標準が重要な理由は、rsyslogが実際にカーネル経由でデータを取得するためであり、カーネルが実装するのは標準です。
$
rsyslog.conf のディレクティブに関しては、これらはrsyslog固有のものであり、オプションのdocパッケージをインストールすると、それらのガイドがにありますrsyslog_conf_global.html
。
楽しみを持っている...あなたは、アプリケーションがシステムロガーを使用する方法について興味があるならば、見てman logger
とman 3 syslog
。
ログローテーション
ログをローテーションする標準的な手段は、と呼ばれるツールを使用することですlogrotate
(およびがありますman logrotate
)。logrotateを使用する標準的な方法はcronデーモンを使用することですが、そのようにする必要はありません(たとえば、デスクトップを毎日オフにする傾向がある場合は、syslogが開始する前にブート時に一度だけ実行することもできますが、明らかに、ファイルシステムがマウントされた後(rw)。
ここで logrotateの良い紹介があります。logrotateはsyslogだけのものではなく、あらゆるファイルで使用できることに注意してください。基本設定ファイルはですが/etc/logrotate.conf
、設定には「include」ディレクティブがあるため、通常、ほとんどのものは/etc/logrotate.d
ディレクトリ内の個々のファイルに入ります(ここでdはデーモンではなくディレクトリ用、logrotateはデーモンではありません)。
logrotateを使用する際に考慮すべき重要なことは、アプリケーションの実行中にログファイルが「回転」、つまり移動すると、アプリケーションがどのように反応するかです。WRT(r)syslogd、そのログへの書き込みを停止します(これにはセキュリティ上の理由があると思います)。これに対処する通常の方法は、syslogに再起動(およびすべてのファイルを再度開く)をpostrotate
指示することです。そのため、logrotate confファイルに、SIGHUPをsyslogデーモンに送信するディレクティブが表示されます。