Если я разрабатываю библиотеку Java, будет ли хорошей практикой выдавать операторы журнала из кода библиотеки?
Регистрация в библиотеке сделает отладку и устранение неполадок более прозрачной. Однако, с другой стороны, мне не нравится засорять мой библиотечный код инструкциями журналирования. Есть ли какие-либо последствия для производительности, которые следует учитывать?
Ответы:
Да, ты должен. Использование фасада регистрации, такого как SLF4J, дает вам гибкость, не обременяя ваших пользователей конкретной структурой регистрации.
Кроме того, если ваши пользователи не включают банку SLF4J (из руководства пользователя ):
Если вы беспокоитесь о влиянии производительности на ведение журналов, ознакомьтесь с этой записью SLF4J FAQ . Идея состоит в том, что вы предоставляете параметры для записи операторов вместо их добавления в строку:
SLF4J - это еще один лесозаготовительный фасад?
источник
Да , вы должны войти из кода вашей библиотеки. Это не только помогает вам развиваться, но и люди, которые используют библиотеку, сочтут ее полезной. Помните, что вы всегда можете установить уровни ведения журнала, чтобы показывать только те записи журнала, которые вам нужны - и они могут делать то же самое.
Недавно я использовал Mybatis , инструмент ORM с открытым исходным кодом. Я отлаживал проблему, когда запрос, который я считал правильным, не дал результатов. Это был параметризованный запрос, и, поскольку Mybatis ведет логирование в коде своей библиотеки, я смог включить его и увидеть фактический запрос, который выполняется. Легко было сказать, что я поменял два параметра. Без входа в библиотеку я не смог бы найти проблему почти так же быстро.
источник