Golang のネイティブ ログ モジュールはニーズを満たすことができず、オープンソースのサードパーティ パッケージでは完全に十分ではありません。多くのユーザーがいるlogrusには回転機能がないことはよく知られています。運用・保守はもちろん、ログの処理もシンプルかつ実用的で十分なものであることが望まれます。 logrotate を実装するために追加のパススルー システムは必要ありません。
1. 需要
需要に関しては、いくつかの主要な側面があります: (推奨される学習: go )
一方で、ローテーション機能を備え、保持されるログのコピー数を制限することは間違いなく必要です。ファイルサイズごとにカットするか、日ごとにカットするか、時間ごとにカットするかについては、ご相談させていただきます。
一方、ログ レベルを動的に調整できる場合は、通常のログを閉じるのに便利です。オンライン デバッグ中に、ログ レベルを動的に下げることができます。さらに多くのデバッグ ログを出力できます。
2. 研究
現時点では主なものがいくつかあります:
github.com/sirupsen/logrus。用户广泛,但明确表示不支持日志切割功能,建议通过hook走日志系统。 github.com/natefinch/lumberjack。支持以文件大小的方式切割日志。用户偏少。 gopkg.in/inconshreveable/log15.v2。比较老牌。 github.com/lestrrat-go/file-rotatelogs。基于小时数进行切割的小众包。 github.com/xiaomi-tc/log15。小米基于log15写的二次封装增加了切割功能。但只有2星。
元同僚がベースに書いたものon log15 セカンダリカプセル化ですが、log15.v2/ext パッケージは理解しにくいです。
github.com/ngaut/log。完全不依赖第三方包。可基于日期及小时进行切割。
要約すると、ngaut はカプセル化プロセスを学習して理解するのにより適しています。 logrus をベースにした、より信頼性の高い選択肢ですが、最下層には他のパッケージで実装された切断機能が必要です。
3. 機能設計
要点:
ログ機能は logrus によって完成されます。
ログの切断を完了し、履歴ログを圧縮する必要があります
Go コードで発生した問題を参照してサポート レベルのホット アップデートが提供されます
以上がgolang ログを設計する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。