シェルスクリプトのロガーツールである 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が読み込まれてから最初に書き出す際に上書きされます。