状況
- ファイルをログ出力に行う
- テストコードを書いている
問題
- VSCodeでユニットテストを行うとき、File Not Found エラーによりテストが実行できない
原因
- テスト時、作業ディレクトリがテストファイルの存在するディレクトリに移動してしまう
- このため、相対パスで記述したログファイルがNot Foundになってしまう
解決策
- テスト実行時はログファイルを使わないようにしよう
具体的に
- go runをする際、環境変数に起動モードのフラグを記述する
- さらに、本番モードで起動されたときはログファイルを起動しないようにする
コード
-
Bash
run: MODE="prod" go run $(CMD) test: MODE="test" go run $(CMD)
-
ログファイルを扱うコード
if os.Getenv("MODE") == "prod" { file := os.OpenFile() logrus.SetOutput(file) } else { logrus.SetLevel(logrus.DebugLevel) }