rcmdnk's blog

20170123_shelllogger_200_200

シェルスクリプトのロガーツールである shell-logger にファイル出力機能を追加しました。

shell-logger

このレポジトリにあるetc/shell-loggerを読み込むことで、 debug, info, notice, warning, errorといったコマンドが使えるようになり、 引数として文章を渡すと それぞれのログレベルによって色を変えたりして整形した状態で出力してくれます。

時刻も自動で出力されるので、ログを取りたいときに便利です。

また、errorではどこでエラーが発生したかを表示するためのTraceback機能もあります。

これらの出力は標準出力/標準エラー出力に出力されますが、 ファイルにリダイレクトされたりパイプを使ってteeなど他のコマンドに渡される際には 色を外すようになっています。

ログファイルへの出力は後で直接見るときに余計なエスケープシーケンスが邪魔になるためです。

ただ、これだとteeとかでターミナルとファイルに同時に出力するときに色がなくなってしまうのでちょっと悲しい。

ということで中で直接ファイルに出力する機能を追加しました。

ファイル出力機能

新たにLOGGER_FILE_XXXという環境変数が追加されました。

Variable Name Description Default
LOGGER_FILE_OUTPUT If set, output is written to the file. ”” (Not output file is defined)
LOGGER_FILE_ONLY If 1 and LOGGER_FILE_OUTPUT is set, not output will be given to stdout/stderr. 0
LOGGER_FILE_LEVEL Output level for the file. Same as LOGGER_LEVEL
LOGGER_FILE_APPEND If 1, output is appended to the file. Otherwise, the file is overwritten. 0

LOGGER_FILE_OUTPUTにファイル名を指定すると、そのファイルにログが出力されます。 その際には色などのエスケープシーケンスは含みません。

一方、デフォルトではLOGGER_FILE_OUTPUTを設定しても標準出力/標準エラーにも出力され、 その際には色などのエスケープシーケンスが含まれます。

LOGGER_FILE_ONLYを1にすると、ファイルにのみ出力され、標準出力/標準エラーには出力されません。

また、LOGGER_FILE_LEVELでファイルに出力するログレベルを指定できます。 これはデフォルトでは標準出力/標準エラー用のLOGGER_LEVELと同じですが、別の値にすることもできます。

LOGGER_FILE_APPENDを1にすると、ファイルに追記されます。 デフォルトではshell-loggerが読み込まれてから最初に書き出す際に上書きされます。

Sponsored Links
Sponsored Links

« vim_ahkのAutoHotkey v2対応版リリース(含v1->v2への対応方法) Pythonのプロジェクト管理ツールをPoetryからuvに移行 »

}