
私は、OSX 上で MySQL、Redis、MongoDB、memcached を使用する Rails および Scala アプリケーションを開発しています。
常に6つのターミナルを開いてログを調べるのはかなり面倒なので、プログラムを起動してstdout / log to socket(またはそれが唯一の出力である場合はlogfile tail)を取得し、それをoriginのプレフィックスで集約できるツールがあるかどうか疑問に思っています。
[MySQL - 00pid00] SELECT .......
[Rails Server - 11pid11] GET request to /foo
...
理想的には、並べ替えやフィルタリングも次のようにできるアパッチチェーンソーlog4j を許可し、正規表現に基づいて独自のフィールドを作成します (つまり、エラーが発生した場合、エラーの URL と HTTP 応答/ファイル + エラーの原因となった行のみを表示するフィールドを表示します)。
(sed、awk、grep などは知っていますが、GUI の方がはるかに使いやすく、使い始めるのもずっと早いです)
答え1
各システムをファイルにログするように設定できる場合は、Chainsaw からそれらのログを追跡し、ログ エントリを 1 つのテーブルに集約できます。方法は次のとおりです。
- Chainsaw の最新の開発者スナップショットをダウンロードします。http://people.apache.org/~sdeboy
- 「ようこそ」タブを選択し、タブの上部にある「サンプル レシーバー構成の表示」ボタンをクリックして構成をコピーします - 追跡するログ ファイルごとに 1 つずつ、複数の VFSLogFilePatternReceiver エントリを作成します。
- 最も単純な logFormat は MESSAGE です。これは、Chainsaw の行内の MESSAGE フィールドの各ログ行を配置します。
- LogFilePatternReceiver javadoc で定義されているフィールドを使用して、Chainsaw でログ行を解析できます。http://logging.apache.org/log4j/companions/receivers/apidocs/org/apache/log4j/varia/LogFilePatternReceiver.html
- ログ形式が複数行にまたがる場合は、改行を表すために (LF) を使用できます (JavaDoc にはまだありません)。
- すべてのログ ファイルが Chainsaw に個別のタブとして表示されたら、表示したいイベントに一致する式を定義することで、すべてのタブのすべてのイベントを新しいタブに収集できます (式の構文に関するドキュメントについては、ヘルプ/チュートリアルを参照してください)。
- ヒント: チェーンソーのログメッセージが自分のメッセージと混ざらないように、チェーンソーのログタブをクリアして一時停止します (「現在のタブ」メニューから)。
- 「表示、式からタブを作成」を選択
- すべてのタブのすべてのエントリに一致する最も単純な式はMSG EXISTSです。
- 式を含む新しいタブが作成され、式に一致するすべての既存のイベントが表示されます。
- 式に一致する新しいイベントが到着すると、元のタブと式タブに追加されます。
答え2
標準のログファイルに独自のログファイルを追加できます/Applications/Utilities/Console.app