一般的なLinuxシステムにはなぜそんなに多くのログファイルがありますか?統合ログデータベース/ファイルとAPIを使用しないのはなぜですか?

一般的なLinuxシステムにはなぜそんなに多くのログファイルがありますか?統合ログデータベース/ファイルとAPIを使用しないのはなぜですか?

一般的なLinuxシステムになぜそれほど多くのログファイルがあるのか​​疑問に思います。ロギングのために1つのシステムAPI機能とすべてのアプリケーションのすべてのログエントリを保持する1つの包括的なテーブルを使用する方が良い考えではありませんか?

答え1

それの一部ですUnixの哲学。アイデアは、テキストファイルがプログラムによってロックされず、誰もが望むスキルを使用できることです。さらに一歩進んで、XMLなどのマークアップ言語ではなくフラットファイルが一般的に使用されます(もちろん、コンテンツをXML形式で保存するプログラムも見たことがありますが)。

Google検索でこれを見つけました。よく書いたプレーンテキストに関する情報とUnix哲学の説明。

答え2

単純なテキストファイルを使用すると、ログエントリを取得するためにデータベース関連のツールが必要ないという利点があります。

必要に応じてgrepで分析し、好みのポケットベルで開くことができ、追加のライブラリなしで好みのスクリプト言語(Perl、Pythonなど)で処理できます。

Unixシステムにはすでにある種の「syslog API」があります。これをsyslogと呼びます。 Syslogは実際のAPIではありませんが、メッセージロギングの標準です。名前は、ネットワークプロトコルとその背後にあるライブラリとデーモンを表します。

ほとんどのシステムのデフォルト設定は、ローカルメッセージを受信するsyslogデーモンです。

デーモンはメッセージを受け入れて記録します。あらゆる種類のプラットフォームにさまざまなsyslogデーモン実装があり、データベースにメッセージを記録することもできます。

それはあなた次第です。

答え3

一般的なLinuxシステムになぜそれほど多くのログファイルがあるのか​​疑問に思います。

ログファイルごとに異なる情報が含まれています(通常はいくつかの重複があります)。異なる循環および保存方針、異なる権限など、異なる特性を持つことがよくあります。 syslogデーモンはこれを作成するのに役立ち、その設定を見ることができます。/etc/syslog.confまたは/etc/syslog-ng.conf

ロギングにシステムAPI機能を使用する方が良い考えではないでしょうか?

これは良いアイデアです。そう呼ぶシステムログ。これは、ログエントリをsyslogデーモンに送信することです。

そして、すべてのアプリケーションのすべてのログエントリを保持する包括的なテーブルが必要ですか?

今それはワーム缶詰になりました。データベースエンジン、リレーショナルデータベース、SQLでクエリできるデータベースがあると仮定しているようです。しかし、UNIXはSQLより古いため、SQLを標準コンポーネントとして採用しないのにはそのような理由がある。 Unixでは、データベースはファイルシステムです。リレーショナルデータベースではありません。シンプル一つ。その項目は行ではありませんが、シンプルファイル、好ましくはテキスト、好ましくは単純な形式である。たとえば、ログファイルは、日付、システム名、元のプログラム、および項目テキストを含む項目が1行に1つずつあるテキストファイルです。リレーショナルデータベースを使用すると、次のような多くの欠点があります。

  • データベースが機能しない場合はどうなりますか? (ファイルシステムは基本的なコンポーネントです(リレーショナルデータベースよりはるかに簡単だと言っていますか?) )。
  • データベースタスクを記録する方法は? (もちろん、データベース自体を介して - すべてのログにはカーネルとsyslogデーモンのエントリが含まれていますが、もう一度複雑なデータベースのため、これはより困難で信頼できなくなります。)
  • ログエントリにどのようにアクセスしますか?catをSQLクエリの単純さと比較してくださいgreplessファイル権限、まあ、一般的なリレーショナルデータベースでこれを処理する方法がわかりません。
  • マルチサーバーインストールでは、ログをローカルに保存するのではなく、Unixの誕生後にsyslogデーモンに組み込まれているリモートロギング機能を使用します。これは、UNIXロギングアーキテクチャを使用して簡単に達成できます。複雑な予算ではレプリケーションデータベースを実行できません。

答え4

これにより、「tail -f /var/log/apache/access.log」などの操作ができなくなります。

なぜすべてを1つのファイルに入れる方が良いと思いますか?

関連情報