提案 #1580
完了デバッグ用メッセージの改善
説明
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
チケあって良さそうですね。欲しいもの書く場所あったほうが手入れる時にやりやすいと思うので。
toshi_a 初音 さんがほぼ3年前に更新
- ステータス を 分類待ち から 実装待ち に変更
基本的には標準のLoggerを使えば良さそう
https://docs.ruby-lang.org/ja/latest/class/Logger.html
現在のnoticeなどのメソッドを転送すればいいが、warnだけ標準のメソッドをoverrideしてしまっている。
Izumi Tsutsui さんがほぼ3年前に更新
本題と関係ないんですが、起動時のwarning: {MIKUTTER_DIR}/core/mui/gtk_extension.rb:6:in `<top (required)>': require-if-exist: file not found: Win32API
がいつも気になってしまいます。これは overrideしているせい?
Shibafu Midorino さんがほぼ3年前に更新
- 担当者 を 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自体いらないような気もしますが、検証もできなさそうですね……。
Shibafu Midorino さんがほぼ3年前に更新
出力先がttyだったら、エスケープシーケンスを使ってログレベルや注目すべき場所に色分けがあると、個人的には見やすくて嬉しいなという思いがあります。
起動オプションで有効にする程度の扱いでも構わないんですが、いかがでしょうか? 実装入れちゃってもいいですか?
Izumi Tsutsui さんがほぼ3年前に更新
Shibafu Midorino さんは #note-4 で書きました:
出力先がttyだったら、エスケープシーケンスを使ってログレベルや注目すべき場所に色分けがあると、個人的には見やすくて嬉しいなという思いがあります。
起動オプションで有効にする程度の扱いでも構わないんですが、いかがでしょうか? 実装入れちゃってもいいですか?
「黒地に青がほとんど見えない端末」「白地に黄色がほとんど見えない端末」があるのでそのへんは避けたいという思いはあります。
(こちらの化石環境 kterm とかの場合 git log のデフォルト黄色とか壊滅)
そうなると赤・緑・マゼンタくらいしか残らないのですが(白地にシアンも見えるといえば見えるが)、
`--debug` 同様でオプションで切り替えられるのであれば「役に立つケースがあるのであれば選択可能」ということで問題ないと思います。
Shibafu Midorino さんがほぼ3年前に更新
- ステータス を 実装待ち から レビュー待ち に変更
- 担当者 を削除 (
Shibafu Midorino) - ブランチ を topic/1580-new-logger にセット
多くの場合にちゃんと見える色を選ぼうとするとびっくりするくらい選択肢が少ないですよね、どうしてこんな実装ばかり……。
なお、現代では色の視認性を重視しているユーザーは耐えきれずに端末の配色設定をカスタマイズしてしまうと思うので、そこまで掘り下げない姿勢です。
ある程度実装できたのでpushしました。何人か見ていただければと思います。
- logメソッドはLoggerを経由して出力するようになりました。これによって出力にタイムスタンプが含まれるようになったのと、自前のmutexが不要になりました。
- (内部処理用と注釈されているのを良いことに) logメソッドに手を加えたので、notice, warn, errorの各ログレベルのメソッドはあんまり手を加えていません。渡す引数はちょっと変えた。
- logメソッドに関連してlogfileメソッドというのがあり、どうやらlogメソッドに渡した内容を端末以外のファイルに書き出す機能があったようなのですが、 toshi_aさんも覚えてないみたい なので消しました。
--color
オプションを付けると、stderrがttyの場合にANSIエスケープシーケンスを使って色付けするようになりました。- 途中のcommitまで、ログ本文が目に入りやすいように呼出元情報を薄めの色に変えようとしていたけど、情報の優先度付けに自信が持てなかったのでやめました。(バックトレース付きのパターンでちぐはぐだし)
Izumi Tsutsui さんがほぼ3年前に更新
手元作業ブランチにマージしてやってみました。
だいたいよさそうですが、通常メッセージの間に 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
は手元デバッグ用メッセージです。