Производительность apache.commons.logging.log без защиты кода отладочного журнала - PullRequest
0 голосов
/ 27 апреля 2019

apache.coomons.logging.Log.Log2JLogger обеспечивает защиту кода, такую ​​как log.IsDebugEnabled(). Однако можно просто пойти дальше и позвонить log.debug(message) и мы не видим эти сообщения, если уровень отладки не настроен.

С точки зрения производительности, особенно с учетом того, что мы хотим оставить эти сообщения отладки для производственной отладки, будет ли считаться наилучшей практикой вызывать эти средства защиты кода перед попыткой войти в систему?

Например, будет ли это считаться лучшей практикой?

if log.isDebugEnabled()
     log.debug("trouble brewing...");

Или звонит

log.debug("I'll slow you down...");

уже сделали это для нас?

1 Ответ

1 голос
/ 27 апреля 2019

Если стоимость создания вашего параметра для метода регистрации высока, вам следует сначала вызвать метод guard. В приведенном вами примере нет никакого смысла, поскольку статическая строка не требует снижения производительности, и, как вы правильно догадываетесь, каркас ведения журналов в любом случае выполняет проверку, прежде чем принять решение о том, регистрировать ли ее.

Но учтите следующее;

logger.debug(myObject.someMethod());

В этом случае myObject.someMethod() будет вызываться до для регистратора, получающего от него возвращаемое значение. Если этот метод выполняет длительные операции, то вы будете страдать от снижения производительности независимо от того, включен регистратор для отладки или нет. В этом случае вы захотите использовать isDebugEnabled() до совершения этого вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...