提案 #1580
closedデバッグ用メッセージの改善
Description
Mastodonでいくつか挙がっていたデバッグメッセージに対する改善要望をとりあえずメモするチケットです。
- https://social.mikutter.hachune.net/@shibafu528/107587618908145991
ずっと思ってたんですがmikutterのdebug logの中でエラーレベルの見分けがマジで付かねえ - https://social.mikutter.hachune.net/@tsutsuii/107587635639448202
mikutter のログ、時間も表示すべきだろうか、というのは思っている - https://social.mikutter.hachune.net/@toshi_a/107587649994541207
loggerは使いたいですねえ
https://social.mikutter.hachune.net/@shibafu528/107587752715642732
チケあって良さそうですね。欲しいもの書く場所あったほうが手入れる時にやりやすいと思うので。
Updated by toshi_a 初音 over 2 years ago
- Status changed from 分類待ち to 実装待ち
基本的には標準のLoggerを使えば良さそう
https://docs.ruby-lang.org/ja/latest/class/Logger.html
現在のnoticeなどのメソッドを転送すればいいが、warnだけ標準のメソッドをoverrideしてしまっている。
Updated by Izumi Tsutsui over 2 years ago
本題と関係ないんですが、起動時のwarning: {MIKUTTER_DIR}/core/mui/gtk_extension.rb:6:in `<top (required)>': require-if-exist: file not found: Win32API
がいつも気になってしまいます。これは overrideしているせい?
Updated by Shibafu Midorino over 2 years ago
- Assignee set to Shibafu Midorino
やってみます。
Izumi Tsutsui さんは #note-2 で書きました:
本題と関係ないんですが、起動時の
warning: {MIKUTTER_DIR}/core/mui/gtk_extension.rb:6:in `<top (required)>': require-if-exist: file not found: Win32API
がいつも気になってしまいます。これは overrideしているせい?
7dc2b635a37ee1948f8427124f331229255a8b05 で追加されたWindows対応用のrequireの空振り警告みたいですね。
require自体いらないような気もしますが、検証もできなさそうですね……。
Updated by Shibafu Midorino over 2 years ago
出力先がttyだったら、エスケープシーケンスを使ってログレベルや注目すべき場所に色分けがあると、個人的には見やすくて嬉しいなという思いがあります。
起動オプションで有効にする程度の扱いでも構わないんですが、いかがでしょうか? 実装入れちゃってもいいですか?
Updated by Izumi Tsutsui over 2 years ago
Shibafu Midorino さんは #note-4 で書きました:
出力先がttyだったら、エスケープシーケンスを使ってログレベルや注目すべき場所に色分けがあると、個人的には見やすくて嬉しいなという思いがあります。
起動オプションで有効にする程度の扱いでも構わないんですが、いかがでしょうか? 実装入れちゃってもいいですか?
「黒地に青がほとんど見えない端末」「白地に黄色がほとんど見えない端末」があるのでそのへんは避けたいという思いはあります。
(こちらの化石環境 kterm とかの場合 git log のデフォルト黄色とか壊滅)
そうなると赤・緑・マゼンタくらいしか残らないのですが(白地にシアンも見えるといえば見えるが)、
`--debug` 同様でオプションで切り替えられるのであれば「役に立つケースがあるのであれば選択可能」ということで問題ないと思います。
Updated by Shibafu Midorino over 2 years ago
- Status changed from 実装待ち to レビュー待ち
- Assignee deleted (
Shibafu Midorino) - ブランチ set to topic/1580-new-logger
多くの場合にちゃんと見える色を選ぼうとするとびっくりするくらい選択肢が少ないですよね、どうしてこんな実装ばかり……。
なお、現代では色の視認性を重視しているユーザーは耐えきれずに端末の配色設定をカスタマイズしてしまうと思うので、そこまで掘り下げない姿勢です。
ある程度実装できたのでpushしました。何人か見ていただければと思います。
- logメソッドはLoggerを経由して出力するようになりました。これによって出力にタイムスタンプが含まれるようになったのと、自前のmutexが不要になりました。
- (内部処理用と注釈されているのを良いことに) logメソッドに手を加えたので、notice, warn, errorの各ログレベルのメソッドはあんまり手を加えていません。渡す引数はちょっと変えた。
- logメソッドに関連してlogfileメソッドというのがあり、どうやらlogメソッドに渡した内容を端末以外のファイルに書き出す機能があったようなのですが、 toshi_aさんも覚えてないみたい なので消しました。
--color
オプションを付けると、stderrがttyの場合にANSIエスケープシーケンスを使って色付けするようになりました。- 途中のcommitまで、ログ本文が目に入りやすいように呼出元情報を薄めの色に変えようとしていたけど、情報の優先度付けに自信が持てなかったのでやめました。(バックトレース付きのパターンでちぐはぐだし)
Updated by Izumi Tsutsui over 2 years ago
手元作業ブランチにマージしてやってみました。
だいたいよさそうですが、通常メッセージの間に notice が割り込んでしまうことがあるような?
I, [2022-01-18T00:00:52.846083 #2208] INFO -- /home/tsutsui/.mikutter/plugin/postbox_text_font/postbox_text_font.rb:13:in `gen_widget_post': postbox_font css: textview { font-family: 'VL Pゴシック'; font-size: 11pt; } #<Thread:0xab838028 /home/tsutsui/mikutter/mikutter/plugin/notification/notification.rb:14 run> terminated with exception (report_on_exception is true): Traceback (most recent call last): 7: from /home/tsutsui/mikutter/mikutter/plugin/notification/notification.rb:15:in `block in main' 6: from /usr/pkg/lib/ruby/2.7.0/open-uri.rb:744:in `open' 5: from /usr/pkg/lib/ruby/2.7.0/open-uri.rb:174:in `open_uri' 4: from /usr/pkg/lib/ruby/2.7.0/open-uri.rb:233:in `open_loop' 3: from /usr/pkg/lib/ruby/2.7.0/open-uri.rb:233:in `catch' 2: from /usr/pkg/lib/ruby/2.7.0/open-uri.rb:235:in `block in open_loop' 1: from /usr/pkg/lib/ruby/2.7.0/open-uri.rb:764:in `buffer_open' /usr/pkg/lib/ruby/2.7.0/open-uri.rb:387:in `open_http': 500 Internal Server Error (OpenURI::HTTPError) I, [2022-01-18T00:00:53.842179 #2208] INFO -- {MIKUTTER_DIR}/plugin/mastodon_sse_streaming/raw_server_sent_events_stream.rb:31:in `block in to_enum': connect https://social.mikutter.hachune.net/api/v1/streaming/user? (#<Plugin::Mastodon::SSEAuthorizedType:0xac0a7d80>) I, [2022-01-18T00:00:53.843315 #2208] INFO -- {MIKUTTER_DIR}/plugin/mastodon_sse_streaming/raw_server_sent_events_stream.rb:31:in `block in to_enum': connect https://social.mikutter.hachune.net/api/v1/streaming/public/local?only_media=false (#<Plugin::Mastodon::SSEAuthorizedType:0xac0a5e40>) I, [2022-01-18T00:00:54.226846 #2208] INFO -- {MIKUTTER_DIR}/plugin/mastodon_sse_streaming/raw_server_sent_events_stream.rb:31:in `block in to_enum': connect https://social.mikutter.hachune.net/api/v1/streaming/public/local (#<Plugin::Mastodon::SSEPublicType:0xa8e94a50>) I, [2022-01-18T00:00:54.227317 #2208] INFO -- {MIKUTTER_DIR}/plugin/mastodon_sse_streaming/raw_server_sent_events_stream.rb:31:in `block in to_enum': connect https://social.mikutter.hachune.net/api/v1/streaming/public/local (#<Plugin::Mastodon::SSEPublicType:0xa8e77400>) I, [2022-01-18T00:00:54.822407 #2208] INFO -- {MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112:in `block in bulk_add': @order.(message): 1642308988 I, [2022-01-18T00:00:54.873909 #2208] INFO -- {MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112:in `block in bulk_add': @order.(message): 1642308032 I, [2022-01-18T00:00:54.889524 #2208] INFO -- {MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112:in `block in bulk_add': @order.(message): 1642307145 #<NoMethodError: undefined method `has_key?' for nil:NilClass>I, [2022-01-18T00:00:54.895467 #2208] INFO -- {MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112:in `block in bulk_add': @order.(message): 1642307131 I, [2022-01-18T00:00:54.896305 #2208] INFO -- {MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112:in `block in bulk_add': @order.(message): 1642307115 I, [2022-01-18T00:00:54.899042 #2208] INFO -- {MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112:in `block in bulk_add': @order.(message): 1642306176
{MIKUTTER_DIR}/plugin/gtk3/widget/timeline.rb:112
は手元デバッグ用メッセージです。