Node.jsの開発プロジェクトを使用している場合、我々は使用 log4jsの あなたがlog4js設定することができ、ロギング用のモジュールを アペンダを 別の場所にようにコンソール、ファイルおよびGELFとをログ出力します。
logstash
logstashは、 弾性 1は、多くの場合、ログを収集し、解析するために使用されるテクノロジ・スタック。これは、ログ内のプロジェクトエンジニアリングでは比較的一般的な方法は、ログファイルに書き込まれており、その後、ログファイルのlogstashを読み、解析します。例えば、Node.jsのプロジェクトでは、単に次のような構成をlog4js可能にするために、ファイルにログを記録します:
const log4js = require('log4js');
log4js.configure({
appenders: [{
type: 'file', filename: './example.log' }] }); const logger = log4js.getLogger(); logger.info('hello');
これは、ログに記録され example.log
たファイル、および、入力logstashの構成を次のとおりです。
file {
path => "YourLogPath/example.log"
start_position => "beginning"
}
}
Logstashあなたは、ログファイルを読み取ることができます。ログが良くlogstashする直接生成log4jsことができればしかし、これは常に、トランジットトラブルとしてファイルにビットを感じました。
logstashUDP
log4js logstashUDPはlogstashにログイン直接出力建て。以下のような構成は以下のとおりです。
log4js.configure({
appenders: [{
type: "logstashUDP",
host: "localhost", port: 12345 }] });
Logstash次に配置されました:
input {
udp {
host => "127.0.0.1" port => 12345 } }
ああ、非常に単純なこと!今、あなたは、もはやトランジットとしてファイルを使用する必要がありながらlog4jsは、logstashに直接生成されませんログインすることができます。しかし、私はlogstashサービスがハングアップした場合、この時間はまだログデータを生成しようとしてlog4js問題を使用している場合は、この時間は、最初に考えたのは、それを再起動しlogstashすることですが、再起動後にのみlogstashはしなかった見つけるために、ということがわかったとき、 logstashがハングアップした場合、つまり、ときに生成log4jsをハングlogstashデータを取得するために、そして失われる生成されたデータをlog4jsして処理されません。
エージェントとの今回は、log4js log4js一時的なデータが生成されると考えエージェントにデータを出力するために、データの読み出しをlogstash、からデータを読み取るlogstashエージェントは、エージェントがデータの一部を破棄します。はい、それはキューです。ノーデータ損失の問題だから。
log4js-logstashリピート
log4js-logstash-Redisの アペンダの上記問題log4jsを解決するためです。
彼の原則は次のとおりです。結果のログ出力log4jsはRedisのために、そしてlogstashはRedisのデータを読みましょう。しかし、ダイレクトコールlog4js-Redisの罰金さて、なぜそれをlog4js-logstash-のRedisと呼ばれていますか?logstashのログ形式はもう少しフレンドリーなカスタマイズを行っているためです。?
インストール
npm install log4js-logstash-redis --save
使用
log4js.configure({
appenders: [{
type: "log4js-logstash-redis",
key: "test", redis: { db: 1 } }] });
Redisのオプション構成、接続はデフォルト値のRedis、ではありません。次のようにlogstashは以下のとおりです。
redis {
data_type => "list"
key => "test"
codec => json
}
前記DATA_TYPEの値はリストでなければなりません。