砂漠の旅人(たびと)

UNIX / MS-DOS 時代から電脳砂漠を旅しています

Log2Console の詳細メッセージを正しく日本語で表示する

こんにちは、たびとです。

アプリ開発で NLog や Log4系のログを出力していると、 Unix/Linuxtail -f コマンドのようにリアルタイムにログを見たいときがあります。 そんなとき、Log2Console を使うと同じようなことができるのですが、 あるエリアに表示される日本語が文字化けしてしいます。

今回は、この文字化けを改修し、日本語を正しく表示させ、GitHubに公開したお話です。

この記事の対象者

Log2Console とは

Log2Console とは、Statyk7 氏が GitHub で公開しているツールです。

Log4NetLog4j、NLogなどを使う場合、 ログをファイルに出力すると同時に、 Log2Console にTCP通信でログを送ることで起動中は、 ログをリアルタイムに確認することができます。

実際に使うと、かなり便利でデバックが効率的にできると思います。 他にも、いろいろなログを表示できるので、開発以外でも使えそうですが、 開発用と以外では使っていません。

日本語の文字化け

かなり便利な Log2Console なのですが、日本語特有の欠点が存在します。 それは、ログの詳細メッセージが文字化けすることです。

詳細エリアの日本語が文字化けする画面
詳細エリアの日本語が文字化けする

通常メッセージは同じ内容なので許容範囲内ですが、 エラー情報となると致命的です。 何が出力されたのか理解不能なので、結局ログファイルを開いて探すことになります。

日本語の文字化けを修正する

GitHub のオリジナルをクローンし、Visual Studio Community 2019 を使って、 日本語が正しく表示されるように改修しました。

詳細エリアに日本語を正しく表示させる画面
詳細エリアに日本語を正しく表示させる

たびとの GitHub へ公開

既に Log2Console の開発は活発ではないこと、日本語処理のオーバーヘッドもあるため、 オリジナルをフォークし、別ブランチとして日本語版(1.6.0.3)を公開することにしました。

github.com

実行モジュールの Zip ファイル(Log2Console.zip)を置いたので、 必要な方はダウンロード後、適当なフォルダに解凍して使ってください。 ちなみに、.NET Framework 4.6.1 で動作します。

Releases · sabakunotabito/log2console · GitHub

Log2Console 起動後に最初に設定すること

初回の起動時、以下のダイアログが表示されるので、OKボタンを押します。

初回起動時に表示されるメッセージ画面
初回起動時に表示されるメッセージ

ログを受信するためのダイアログが表示されるので、「Add」ボタンを押します。 ここでは、NLogを使う前提で、「TCP (IPv4 and IPv6)」を選択します。

ログの受信を設定する画面
ログの受信を設定する

アプリに nuget から NLog をインストールし、下記の赤枠の情報をもとに NLogViewer の設定をすると、Log2Console にログが出力されるようになります。

NLog の設定情報が表示された画面
NLog の設定情報

ついでに、再度「Add」ボタンを押して同じように「TCP (IPv4 and IPv6)」を選択します。 今度は、IPv6 となるように「True」を選択します。

IPv6 用の設定を追加する画面
IPv6 用の設定を追加する

これで IPv4IPv6 の両方の通信を受信することができるようになります。 また、IPv4 だけだと、前述の赤枠の設定通りに定義した場合、何も表示されないことがあります。

これを回避するには、「tcp://localhost:4505」の個所を「tcp4:localhost:4505」と、 tcpの後にIPv4用の4を付けると、正しく表示されるようです。

まとめ

今回は、Log2Console および日本語対応を紹介しました。 実は日本語版に改修したのは数年前で、実際の開発現場でも好評なので、 今回 GitHub に公開することにしました。

アプリ開発で NLog や Log4系 を使っている場合、かなり便利なのでお勧めです。 実際に C# で NLog を出力する方法は以下の記事を参考にしてください。

sabakunotabito.hatenablog.com

最後に参考サイトを掲載しておきます。

では、皆さん、よい旅を。

参考サイト