Project

General

Profile

Actions

提案 #1580

closed

デバッグ用メッセージの改善

Added by Izumi Tsutsui 11 months ago. Updated 10 months ago.

Status:
終了
Priority:
通常
Assignee:
-
Target version:
プラグイン名:
ブランチ:
topic/1580-new-logger

Description

Mastodonでいくつか挙がっていたデバッグメッセージに対する改善要望をとりあえずメモするチケットです。

https://social.mikutter.hachune.net/@shibafu528/107587752715642732
チケあって良さそうですね。欲しいもの書く場所あったほうが手入れる時にやりやすいと思うので。

Actions #1

Updated by toshi_a 初音 11 months ago

  • Status changed from 分類待ち to 実装待ち

基本的には標準のLoggerを使えば良さそう
https://docs.ruby-lang.org/ja/latest/class/Logger.html

現在のnoticeなどのメソッドを転送すればいいが、warnだけ標準のメソッドをoverrideしてしまっている。

Actions #2

Updated by Izumi Tsutsui 11 months ago

本題と関係ないんですが、起動時の
warning: {MIKUTTER_DIR}/core/mui/gtk_extension.rb:6:in `<top (required)>': require-if-exist: file not found: Win32API
がいつも気になってしまいます。これは overrideしているせい?

Actions #3

Updated by Shibafu Midorino 11 months 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自体いらないような気もしますが、検証もできなさそうですね……。

Actions #4

Updated by Shibafu Midorino 11 months ago

出力先がttyだったら、エスケープシーケンスを使ってログレベルや注目すべき場所に色分けがあると、個人的には見やすくて嬉しいなという思いがあります。
起動オプションで有効にする程度の扱いでも構わないんですが、いかがでしょうか? 実装入れちゃってもいいですか?

Actions #5

Updated by Izumi Tsutsui 11 months ago

Shibafu Midorino さんは #note-4 で書きました:

出力先がttyだったら、エスケープシーケンスを使ってログレベルや注目すべき場所に色分けがあると、個人的には見やすくて嬉しいなという思いがあります。
起動オプションで有効にする程度の扱いでも構わないんですが、いかがでしょうか? 実装入れちゃってもいいですか?

「黒地に青がほとんど見えない端末」「白地に黄色がほとんど見えない端末」があるのでそのへんは避けたいという思いはあります。
(こちらの化石環境 kterm とかの場合 git log のデフォルト黄色とか壊滅)

そうなると赤・緑・マゼンタくらいしか残らないのですが(白地にシアンも見えるといえば見えるが)、
`--debug` 同様でオプションで切り替えられるのであれば「役に立つケースがあるのであれば選択可能」ということで問題ないと思います。

Actions #6

Updated by Shibafu Midorino 11 months 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まで、ログ本文が目に入りやすいように呼出元情報を薄めの色に変えようとしていたけど、情報の優先度付けに自信が持てなかったのでやめました。(バックトレース付きのパターンでちぐはぐだし)
Actions #7

Updated by Izumi Tsutsui 11 months 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 は手元デバッグ用メッセージです。

Actions #8

Updated by toshi_a 初音 10 months ago

  • Status changed from レビュー待ち to 終了
Actions

Also available in: Atom PDF