Javaでパラメータ化されたログを読み込んでいましたが、遅延評価を実行するときに連結の代わりにパラメータ化されたログを使用すると言われています。パラメータ化されたログを使用する理由を理解できない
ので、代わりの
logger.debug("My text is" + x);
使用:トレースレベルのみの情報のログに設定されている場合
logger.debug("My text is {}", x);
、なぜ連結は、最初のシナリオで起こるのでしょうか?
logger.debug("My text is {}",() -> compute());
代わりに、この場合
logger.debug("My text is {}", compute());
の、なぜラムダ方法がより良いアプローチと考えられている:私は、ログ内の関数を消費する時間を持っている場合にも、それは使用すると言われている
。文字列連結の場合のように遅く呼び出されることもありませんか?
詳細な説明をありがとう。関数が呼び出される前に、最初にすべての引数が評価され、次に関数が – user1692342
@ user1692342と呼び出されます。何らかの引数がある場合はyesが返されます。 –
@ user1692342ラムダのアプローチでは、 'compute()'を実行する 'Supplier'としてパラメータを評価することができます。したがって、完全に評価されていますが、実際の 'compute()'メソッドはまだ実行されていません。 – Kayaman