@ indexzero-
オプションのAPIパラメータをファイルトランスポートに追加して、ログファイルを日付で分割できるようにすることについてどう思いますか? アイデアは、新しい日に新しいログファイルが作成され、Winstonがこれらすべてを自動的に処理するか、日付に基づいてどのログファイルに書き込むかを知ることです。
これに対するパッチリクエストを受け入れますか
いいね! 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
理想的には、これはウィンストンの問題ではないことに同意しますが、
分かりました...
大声で考える:ログローテーションロジックを別のノードプログラムに移動するので、プラットフォーム間で機能する再利用可能な単純なlogrotateクローンです。
+ + 1
私もlogrotateの提唱者ですが、それだけでは機能しません。 Logrotateは、ログをフラッシュして閉じる時期であることをプログラムに通知する方法を提供するため、非常に便利です。
ファイルトランスポートには_createStream.checkFile.createAndFlush関数があり、一見すると適切な処理を実行する必要があるように見えます。 これをログローテーションに使用するには、ノードプログラムにSIGHUPをトラップさせ、この関数にアクセスします。 デイジョブの前にコードを投稿する時間がありませんが、今夜、結果を投稿しようと思います。
この方法でSIGHUPに応答することは、Windowsに転送可能である必要があります。その後、Windowsで使用するログローテーション(ノードライブラリまたはその他の魔法)は、読者の演習として残されます。
他の誰かがこれを探している場合:
ヒントをありがとう、@ pccowboy。 私もlogrotateの大きな支持者です。 node.jsサービス(つまり、winston File maxsizeなど)に1つの構成を使用し、他のサービス(nginx、redisなど)に別の構成(logrotate)を使用するのは気が進まないので、すべてのログファイルにlogrotateを使用したいと思います。 HUP信号をリッスンし、ログファイルをポストローテーションで再度開く簡単な関数をまとめました。
機会があれば、これをよりクリーンな方法で(つまり、ファイルトランスポートの構成オプションとして)書き直して、プルリクエストを作成します。
#205で修正。
驚くばかり!
最も参考になるコメント
このタスクの標準ツールがあれば、winstonコードを複雑にする必要はありません:Logrotate(http://linuxcommand.org/man_pages/logrotate8.html)