はじめに
Go言語でWindows,Mac OS,Linuxのデスクトップアプリを簡単に作れるwails
のデバッグログを見やすくする方法の紹介です。
WailsはTWSNMP FK(別名 シン・TWSNMP)
の開発に利用しています。
開発中にデバッグログが見づらかったので改善しました。
改善前のデバッグログ
Go言語の標準logパッケージの出力とWailsの標準ログが混在して見づらくまっていました。
タイムスタンプから始まる行がGo言語の標準logパッケージです。
DEBで始まる行がWailsの標準ログです。開発中にストレスが感じていました。
Wailsのカスタムログによる改善
Wailsのログに関するドキュメント
の下の方に、カスタムログについての説明があります。
type Logger interface {
Print(message string)
Trace(message string)
Debug(message string)
Info(message string)
Warning(message string)
Error(message string)
Fatal(message string)
}
というインターフェイスをもったstructをWailsのアプリオプションのLoggerに設定すればよいとのことです。
そこで、カスタムログのパッケージを作りました。
package clog
import (
"log"
"github.com/fatih/color"
)
type ColorLogger struct{}
func New() *ColorLogger {
return &ColorLogger{}
}
func (l *ColorLogger) Print(message string) {
log.Println(message)
}
func (l *ColorLogger) Trace(message string) {
log.Printf("%s %s", color.CyanString("[TRACE]"), message)
}
func (l *ColorLogger) Debug(message string) {
log.Printf("%s %s", color.HiGreenString("[DEBUG]"), message)
}
func (l *ColorLogger) Info(message string) {
log.Printf("%s %s", color.HiBlueString("[INFO]"), message)
}
func (l *ColorLogger) Warning(message string) {
log.Printf("%s %s", color.HiYellowString("[WARN]"), message)
}
func (l *ColorLogger) Error(message string) {
log.Printf("%s %s", color.HiMagentaString("[ERR]"), message)
}
func (l *ColorLogger) Fatal(message string) {
log.Printf("%s %s", color.HiRedString("[FATAL]"), message)
}
このパッケージのNew()で作成したstructをLoggerに設定します。
単に、log.Printlnで出力すればフォーマットは、揃いますが、
を使ってカラー表示できるようになっています。
改善後のデバッグログ
凝ったログパッケージを使うことをも考えましたが、このぐらいで十分見やすくなったと思います。