前に作った shell-logger というシェルスクリプト用ロガーツールをアップデートして Traceback機能を付けたりしてみました。
shell-logger
etc/shell-logger.sh</del>/etc/shell-logger**というファイルを読み込むと
debug
, info
, notice
, warn
, err
と言った関数が使える様になります。
追記: 2022/08/07
現在はshell-logger
とsh
を取った名前になっています。
追記ここまで
インストールはcurl
を使って
$ curl -fsSL https://raw.github.com/rcmdnk/shell-logger/install/install.sh| prefix=~/usr/local/ sh
とすると~/usr/local/etc/shell-loggerがインストールされます。
prefix
の場所を適当に変えてインストールしてください。
macOSならHomebrewで
$ brew tap rcmdnk/rcmdnkpac/shell-logger
で入れることが出来ます。
もしくは shell-logger を直接ダウンロードして適当なところに置いてください。
コマンドラインで使う
コマンドラインで使う場合には.bashrcや.zshrcに
1
|
|
の様にshell-loggerをsource
する設定を入れてください。
これでinfo
やerr
と言った関数が使えるようになり、
出力したいワードを引数として渡せば良いだけです。
こんな感じ。
シェルスクリプトの中で使う
Bash/Zshの両方で使えます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
こんな感じでshell-loggerを読み込んで
後は好きなところでinfo
やerr
を呼ぶだけです。
shell-loggerには5つのレベルがあり、
それぞれDEBUG
, INFO
, NOTICE
, WARNING
, ERROR
となっていて
出力する色や出力先が違います。
カラー出力はファイルへの出力などでは色を付けないようになっています。
デフォルトでは各レベルの色は以下の様な感じ。
また、INFO
以上しか出力しない設定になっています
さらに、ERROR
に関してはエラー出力に出す様になっています。(他は標準出力)
debug
に関してはデフォルト設定では出力しませんが、
1 2 3 4 5 6 |
|
と、LOGGER_LEVEL
を0にすることで表示することが出来るので
簡単にデバッグプリントを入れることが出来ます。
Traceback
トレースバック機能を付けてみました。
こんな感じでerr
の時にPythonっぽい雰囲気のTraceback表示を表示してくれます。
各種設定
設定に関しては以下のLOGGER_という値を設定することで変更可能です。
Variable Name | Description | Default |
---|---|---|
LOGGER_DATE_FORMAT | Output date format. | ‘%Y/%m/%d %H:%M:%S’ |
LOGGER_LEVEL | 0: DEBUG, 1: INFO, 2: NOTICE, 3: WARN, 4: ERROR | 1 |
LOGGER_STDERR_LEVEL | For levels greater than equal this level, outputs will go stderr. | 4 |
LOGGER_DEBUG_COLOR | Color for DEBUG | 3 (Italicized. Some terminal shows it as color inversion) |
LOGGER_INFO_COLOR | Color for INFO | ”” (Use default output color) |
LOGGER_NOTICE_COLOR | Color for NOTICE | 36 (Front color cyan) |
LOGGER_WARNING_COLOR | Color for WARNING | 33 (Front color yellow) |
LOGGER_ERROR_COLOR | Color for ERROR | 31 (Front color red) |
LOGGER_COLOR | Color mode: never->Always no color. auto->Put color only for terminal output. always->Always put color. | auto |
LOGGER_LEVELS | Names printed for each level. Need 5 names. | (“DEBUG” “INFO” “NOTICE” “WARNING” “ERROR”) |
LOGGER_SHOW_TIME | Show time information | 1 |
LOGGER_SHOW_FILE | Show file/line information | 1 |
LOGGER_SHOW_LEVEL | Show level | 1 |
LOGGER_ERROR_RETURN_CODE | Error reutrn code of err /error |
100 |
LOGGER_ERROR_TRACE | If 1, error trace back is shown by err /error |
1 |