こんにちは、たびとです。
アプリ開発で NLog や Log4系のログを出力していると、
Unix/Linuxの tail -f
コマンドのようにリアルタイムにログを見たいときがあります。
そんなとき、Log2Console を使うと同じようなことができるのですが、
あるエリアに表示される日本語が文字化けしてしいます。
今回は、この文字化けを改修し、日本語を正しく表示させ、GitHubに公開したお話です。
この記事の対象者
Log2Console とは
Log2Console とは、Statyk7 氏が GitHub で公開しているツールです。
Log4Net、Log4j、NLogなどを使う場合、 ログをファイルに出力すると同時に、 Log2Console にTCP通信でログを送ることで起動中は、 ログをリアルタイムに確認することができます。
実際に使うと、かなり便利でデバックが効率的にできると思います。 他にも、いろいろなログを表示できるので、開発以外でも使えそうですが、 開発用と以外では使っていません。
日本語の文字化け
かなり便利な Log2Console なのですが、日本語特有の欠点が存在します。 それは、ログの詳細メッセージが文字化けすることです。
通常メッセージは同じ内容なので許容範囲内ですが、 エラー情報となると致命的です。 何が出力されたのか理解不能なので、結局ログファイルを開いて探すことになります。
日本語の文字化けを修正する
GitHub のオリジナルをクローンし、Visual Studio Community 2019 を使って、 日本語が正しく表示されるように改修しました。
たびとの GitHub へ公開
既に Log2Console の開発は活発ではないこと、日本語処理のオーバーヘッドもあるため、 オリジナルをフォークし、別ブランチとして日本語版(1.6.0.3)を公開することにしました。
実行モジュールの Zip ファイル(Log2Console.zip)を置いたので、 必要な方はダウンロード後、適当なフォルダに解凍して使ってください。 ちなみに、.NET Framework 4.6.1 で動作します。
Releases · sabakunotabito/log2console · GitHub
Log2Console 起動後に最初に設定すること
初回の起動時、以下のダイアログが表示されるので、OKボタンを押します。
ログを受信するためのダイアログが表示されるので、「Add」ボタンを押します。 ここでは、NLogを使う前提で、「TCP (IPv4 and IPv6)」を選択します。
アプリに nuget から NLog をインストールし、下記の赤枠の情報をもとに NLogViewer の設定をすると、Log2Console にログが出力されるようになります。
ついでに、再度「Add」ボタンを押して同じように「TCP (IPv4 and IPv6)」を選択します。 今度は、IPv6 となるように「True」を選択します。
これで IPv4 と IPv6 の両方の通信を受信することができるようになります。 また、IPv4 だけだと、前述の赤枠の設定通りに定義した場合、何も表示されないことがあります。
これを回避するには、「tcp://localhost:4505」の個所を「tcp4:localhost:4505」と、 tcpの後にIPv4用の4を付けると、正しく表示されるようです。
まとめ
今回は、Log2Console および日本語対応を紹介しました。 実は日本語版に改修したのは数年前で、実際の開発現場でも好評なので、 今回 GitHub に公開することにしました。
アプリ開発で NLog や Log4系 を使っている場合、かなり便利なのでお勧めです。 実際に C# で NLog を出力する方法は以下の記事を参考にしてください。
最後に参考サイトを掲載しておきます。
では、皆さん、よい旅を。