Winston: ファイルトランスポートがログを日付で分割する機能を追加

作成日 2011年05月29日  ·  12コメント  ·  ソース: winstonjs/winston

@ indexzero-

オプションのAPIパラメータをファイルトランスポートに追加して、ログファイルを日付で分割できるようにすることについてどう思いますか? アイデアは、新しい日に新しいログファイルが作成され、Winstonがこれらすべてを自動的に処理するか、日付に基づいてどのログファイルに書き込むかを知ることです。

feature request

最も参考になるコメント

このタスクの標準ツールがあれば、winstonコードを複雑にする必要はありません:Logrotate(http://linuxcommand.org/man_pages/logrotate8.html)

全てのコメント12件

これに対するパッチリクエストを受け入れますか

いいね! APIに関する提案はありますか? 私は次のようなことを考えていました:

           // Specify path option and default to spanning by day ( 24 hours in each file )
           new (winston.transports.File)({ path: './logs' })

ただし、カスタムの日付/時刻フィルターを使用できるようにするためのユーティリティがある場合があります。

このタスクの標準ツールがあれば、winstonコードを複雑にする必要はありません:Logrotate(http://linuxcommand.org/man_pages/logrotate8.html)

@indexzeroこのパッチはまだ受け入れられますか? 私はこれがファイル名オプションを介して実装できることを知っていますが、これに別のオプションを追加することができます。

ログローテーションを実装するのは、個々のデーモンのタスクではありません。 これが、 @ cemuzunlarが言ったようにlogrotateのようなツールがある理由です。

@cemuzunlar @Dieterbe

理想的には、これはウィンストンの問題ではないことに同意しますが、

  • winstonは、さまざまなブログでいくつかの(弱々しい)単純な試み(およびcygwin +自己コンパイルされたlogrotateを使用するためのいくつかの提案にもかかわらず)にもかかわらず、logrotateを持たないWindowsで実行されますが、理論的な理由でそれが可能であるとは思えません。そのwinstonは、書き込み用にファイルを開いたままにします。これにより、Windowsでそのファイルを使用して実行できる操作が大幅に制限されます)
  • winstonのファイルトランスポートはすでにログローテーションを実行しており、日付ではなくファイルサイズで分割するだけです。 また、古いファイルも削除されるため、基本的なログローテーション機能がすべて揃っています。

分かりました...
大声で考える:ログローテーションロジックを別のノードプログラムに移動するので、プラットフォーム間で機能する再利用可能な単純なlogrotateクローンです。

+ + 1

私もlogrotateの提唱者ですが、それだけでは機能しません。 Logrotateは、ログをフラッシュして閉じる時期であることをプログラムに通知する方法を提供するため、非常に便利です。

ファイルトランスポートには_createStream.checkFile.createAndFlush関数があり、一見すると適切な処理を実行する必要があるように見えます。 これをログローテーションに使用するには、ノードプログラムにSIGHUPをトラップさせ、この関数にアクセスします。 デイジョブの前にコードを投稿する時間がありませんが、今夜、結果を投稿しようと思います。

この方法でSIGHUPに応答することは、Windowsに転送可能である必要があります。その後、Windowsで使用するログローテーション(ノードライブラリまたはその他の魔法)は、読者の演習として残されます。

他の誰かがこれを探している場合:

ヒントをありがとう、@ pccowboy。 私もlogrotateの大きな支持者です。 node.jsサービス(つまり、winston File maxsizeなど)に1つの構成を使用し、他のサービス(nginx、redisなど)に別の構成(logrotate)を使用するのは気が進まないので、すべてのログファイルにlogrotateを使用したいと思います。 HUP信号をリッスンし、ログファイルをポストローテーションで再度開く簡単な関数をまとめました。

機会があれば、これをよりクリーンな方法で(つまり、ファイルトランスポートの構成オプションとして)書き直して、プルリクエストを作成します。

https://gist.github.com/suprememoocow/5133080

#205で修正。

驚くばかり!

このページは役に立ちましたか?
0 / 5 - 0 評価