-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ServerConnectionReport: ボットが出力するログの形式と、IRC からの応答のログの形式を分離した #155
ServerConnectionReport: ボットが出力するログの形式と、IRC からの応答のログの形式を分離した #155
Conversation
PluginBase::Adapter のコンストラクタに、アダプターでもプラグイン設定を使えるような仕組みを導入した
メッセージは問題ないと思います。ただ、ロガーとして別のものを使う場面がまだ思い浮かんでおりません。 アダプタからはいつでもconfigメソッドでAdapterOptionsオブジェクトを呼び出せるので、個人的にはそれほど乗り気ではないです。 |
RGRB本体・プラグイン・IRCやDiscordとの通信、これら3種類のログ出力が、見て分かるようになっていたほうが、開発も運用管理もしやすいのではないか、という意図があります。 ただ、今回の変更ではこの意図に基づく変更も中途半端になってしまっているのも事実です。 |
意図を理解できました。これに対しては私も賛成いたします。そのようにする方が開発や運用管理を行いやすいと考えます。 ただし、関連するissueである#133「プラグイン構成要素別の、基底クラス的に使うモジュールを作成する」とは別件として作りたいです(つまり、マージ先を変えたいです)。#133 の目的は、新しい機能を追加することではなく、現在の機能をより簡単に実現できるように仕組みを作り直すことだと、私は捉えておりました。 |
13:37:19 (ocha) > exec/xxx_bot.rb から各プラグインにプラグイン設定として渡しているロガー(AdapterOptions.logger)はLumberjack::Logger のはずです rgrb/lib/rgrb/plugin/configurable_adapter.rb Lines 18 to 20 in 354f52a
13:42:10 (Toybox) FetchTitle: rgrb/configurable_adapter.rb at 354f52a · cre-ne-jp/rgrb · GitHub 13:42:56 だから、RGRB本体のロガーをジェネレータに渡したのではなかった 13:43:40 なぜIRCアダプタをロガーとして渡していたかというと、IRCアダプタのロガー機能を使うと、ログの頭にプラグイン名が追加されたからだったと思います 13:44:08 ところが、今はRGRB本体のロガーを使っているから、ログにプラグイン名が含まれなくなった 13:48:07 直すとしたら、ここか rgrb/lib/rgrb/plugin_base/adapter.rb Lines 17 to 20 in 7d4f640
13:48:08 (Toybox) FetchTitle: rgrb/adapter.rb at 7d4f640 · cre-ne-jp/rgrb · GitHub 13:49:56 @generator.logger = self にして、config_data = config.plugin.merge({ logger: self }) は削除する(重複しているから)13:52:38 あとは server_connection_report のここを上の変更と合うように変える
13:52:39 (Toybox) FetchTitle: rgrb/irc_adapter_methods.rb at 7d4f640 · cre-ne-jp/rgrb · GitHub 13:53:23 @mail_generator.logger = self と変える13:54:18 これでいいのかな 13:55:49 あと、テスト時のようなアダプタ未使用時のロガーについて、プラグイン名を出力しなくてもよいのならば、PluginBase::Adapterに共通のロガーを用意しておく 13:56:07 そうしたら、テスト時に明示的にロガーを設定しなくてもよい 13:56:50 (つまり、DRYでない。かつ、プラグインの数だけロガーが作られることもない) 13:58:13 IRCやDiscordのアダプタが使われるときは、ジェネレータのロガーが差し替えられるので、その既定のロガーが使われることもない 2019/07/28 14:00:00 14:01:43 ああ、そうか、やはりプラグイン(のジェネレータ)のロガーはアダプタとは分ける意図だったのかな #155 (comment) 14:01:44 (Toybox) FetchTitle: ServerConnectionReport: ボットが出力するログの形式と、IRC からの応答のログの形式を分離した by koi-chan · Pull Request #155 · cre-ne-jp/rgrb · GitHub 14:02:11 これは別件とした方が良いと思います 14:06:06 もしこの3種類でログを分けるのならば、最終的には /var/log/rgrb/{{irc,discord}-{bot,plugins,com}.log のように複数のファイルに出力できるところまで持っていくと便利かも 14:06:47 ログを分割するとは、そういうイメージかなぁ 14:08:25 (標準出力に3種類のログが混ざって出力され、何についてのログか見分けるのが大変、ということだと捉えました) 14:10:05 (単にロガーを3分けるだけで標準出力に混ぜて出力 14:11:05 ミス→単にロガーを3種類に分けるだけで標準出力に混ぜて出力するのでは、出力書式が変わるだけで、今とあまり変わらないですよね? 14:12:17 もしログをファイルに出力できるようにする場合、おそらく設定ファイルで出力先のパスを指定できないと不便だと思うから、そのようにできる改修がさらに必要と考えました 14:13:58 …などと考えていたら、「アダプタやジェネレータでよく使う機能を共通のモジュールに含める」という今回の目的よりさらに先の話なのかな、と |
refs #155 v1.0.6までと同様に、アダプタをロガーとして使う。 このようにすると、ログにプラグイン名が出力されるため、どのプラグイン からログが出力されたかが分かりやすい。 ただし、現段階ではアダプタをロガーとして使えるのはIRCアダプタのみで あるため、今後のコミットでDiscordアダプタもロガーとして使えるように する。
refs #155 * IRCアダプタ:アダプタ自身 * Discordアダプタ:ボット側で生成したロガー
fix #74
PluginBase::Adapter のコンストラクタに、アダプターでもプラグイン設定を使えるような仕組みを導入した。
そもそも当該のログ出力メッセージはわかりづらいでしょうか。
この時にはメールを送信しておらず、メールの送信準備ができた段階です。