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