6

失敗した統合テスト中のデバッグ目的で、アプリケーション ログを引き続き表示できるようにしたいと考えています。mix testこれを達成するためにタスクに渡すことができるコマンドはありますか?

4

2 に答える 2

7

すべてのミックス プロジェクトにはconfig.exsファイルがあります。ミックスが開始されると、このファイルがロードされます。elixir の一般的なパターンはtest.exsdev.exsprod.exs、 などのように、さまざまな環境の構成を定義することです。

Phoenix のような多くのプロジェクトでは、これらのファイルがconfigフォルダーに生成され、次の行が表示されますconfig.exs

import_config "#{Mix.env}.exs"

実行すると、環境変数が「test」mix testに設定されます。MIX_ENVこれは、import_config 行がtest.exsファイルをロードすることを意味します。

したがって、テストだけのログ レベルを設定するには、test.exsファイルに次のように記述します。

# Print only warnings and errors during test
config :logger, level: :warn
于 2016-07-26T00:33:48.177 に答える
0

IO.inspectsおよびその他のデバッグ ログを表示するにmix testは、次の構成を変更します。

  1. config/test.exs、次の行を見つけます。
# Print only warnings and errors during test
config :logger, level: :warn
  1. 前の行をコメントアウトし、次の構成をcompile_time_purge_matchingオプションとともに追加します。
config :logger,
  backends: [:console],
  compile_time_purge_matching: [
    [level_lower_than: :debug]
  ]

テストのデバッグが終了したら compile_time_purge_matching、手順 2 の構成をコメント アウトし、元の構成のコメントを解除してlevel: :warn、面倒なテスト ログを回避します。

古いバージョン 注:古いバージョンの Elixir を使用している場合は、次の非推奨の構成を の代わりに使用してcompile_time_purge_matchingください。

config :logger,
  backends: [:console],
  compile_time_purge_level: :debug

compile_time_purge_level: debug非推奨の警告がありますが、Elixir 1.12 でも動作します。

于 2021-06-17T01:37:11.087 に答える