マクロを書きましたが、Logger.infoを使用したいので、Loggerが必要です。これを行うベストプラクティスは何ですか? Loggerを単独で必要とするか、マクロを使用して追加し、そこにLoggerを必要とすることを強くお勧めします。エリクサー:マクロ内に必要です
0
A
答えて
0
ベストプラクティスは、マクロから突然突発することはありません。あなたのマクロのユーザーとして、私のログが無関係の情報で汚染されることを望まないかもしれません。一方、そのような選択をすることは重要です。それは私が一緒に行くだろう、と述べ__using__
パラメータ化:
use My, log: true
:必要とするとき
defmodule My do
defmacro __using__(opts \\ [log: false]) do
quote do
if unquote(opts)[:log], do: require Logger
defmacro my_log(what) do
if unquote(opts)[:log] do
Logger.info(what)
end
end
...
end
end
end
は今、あなたは安全にmy_log
を呼び出すことができ、ユーザが明示的にuse
に渡されたのparamsを経由して記録する機能を必要としない場合
単一トレースなしのLogger
は結果のコードを汚染します。
0
ロガー呼び出しがマクロ内にある必要がありますか?マクロは、ロギングを行うモジュールへの関数呼び出しに展開される可能性があります。
マクロ展開のログを実際に行う必要がある場合は、__using__
マクロを追加して、依存関係とモジュールを必要とします。
関連する問題
- 1. Objective-C:マクロ内で ']'が必要です
- 2. マクロのアンタイプチェックが必要です
- 3. なぜoffsetofマクロが必要ですか?
- 4. エリクサーで投げ捨てる必要のある状況は?
- 5. エリクサーで関数「キャプチャ演算子」が必要なのはなぜですか?
- 6. エリクサー:要求とインポートの差
- 7. Tera Term Scripting、マクロの開発に手助けが必要です
- 8. new-style( "inline")マクロにはscala.metaが必要です
- 9. マクロ内でのマクロのネスト
- 10. モジュール内にファイルが必要ですか?
- 11. カウンター内にカウンターが必要です
- 12. マクロ内のマクロC
- 13. エリクサー:
- 14. エリクサー
- 15. エリクサーで他の
- 16. LIbre Office Calcでマクロを書くにはどの言語が必要ですか?
- 17. なぜマクロに2層の間接指定が必要なのですか?で
- 18. エリクサーで論理的に暗黙のガード句を省略する必要がありますか?
- 19. PG_MODULE_MAGICマクロを使用するには、拡張ライブラリが必要です
- 20. Excelのマクロで助けが必要な場合
- 21. uvm_component/object_utilsマクロを使用する必要があります
- 22. 下記の状況のためにオフィス2007マクロが必要ですか?
- 23. メモ帳++に必要なSImpleマクロ。文字を400行まで挿入する
- 24. はエリクサー:
- 25. エリクサー:is_function
- 26. エリクサー - scrub_params
- 27. エリクサー/フェニックスファイルアップロードフォルダ
- 28. タブからデータをプルするためのマクロが必要
- 29. 行の最新の日付をフィルタリングするマクロが必要
- 30. SAS - マクロ内で呼び出されたproc sqlに続くマクロ
関数の呼び出しに任意の 'Logger'操作を拡大、それは[コンパイル時間パージ]のアイデアを台無しにするので、一言で言えば非常に悪い考えである(https://hexdocs.pm/logger/Logger.html#モジュールアプリケーション構成)。 – mudasobwa