Open6
node.js を実行して console.log された内容を file に保存したい

何回もググってるのでメモ

console.log の内容だけ file に保存
stdout を保存先の file に redirect。
node my-script.js > output.log
例)
my-script.js
console.log('Hello from console.log.');
console.error('Hello from console.error.');
output.log
Hello from console.log.
terminal には以下が表示。
Hello from console.error.
console.log, console.error の内容ともに file に保存
stderr も保存先の file に redirect。
node my-script.js &> output.log
例)
my-script.js
console.log('Hello from console.log.');
console.error('Hello from console.error.');
output.log
Hello from console.log.
Hello from console.error.
terminal には何も表示されない。

すべて terminal にも表示させて file にも保存
node my-script.js 2>&1 | tee output.log
例)
my-script.js
console.log('Hello from console.log.');
console.error('Hello from console.error.');
output.log
Hello from console.log.
Hello from console.error.
terminal にも以下が表示される。
Hello from console.log.
Hello from console.error.

file 名に timestamp を乗っける
date
コマンドの結果を file 名に使えばOK
node my-script.js &> output_$(date "+%s").log
output_1673600093.log
のような file が保存される。

date の format について
フォーマット | コマンド例 | 出力サンプル |
---|---|---|
YYYY/MM/DD hh:mm:ss | date "+%Y/%m/%d %H:%M:%S" | 2017/09/07 07:16:51 |
YYYY-MM-DDThh:mm:ss | date +%Y-%m-%dT%H:%M:%S | 2017-09-07T07:16:51 |
YYYYMMDD-hhmmss | date +%Y%m%d-%H%M%S | 20170907-071651 |

format にスペースを含む場合は "" で囲う
date
> 2023年 1月13日 金曜日 17時57分46秒 JST
node my-script.js &> "$(date).log"
2023年 1月13日 金曜日 17時58分30秒 JST.log
という file 名で保存。