Как контролировать уровень ведения журнала в клиентской библиотеке? - PullRequest
1 голос
/ 02 декабря 2009

Мы бы хотели, чтобы клиенты могли контролировать уровни ведения журнала в нашем клиентском JAR. Каков наилучший способ сделать это?

В настоящее время у нас есть несколько операторов журнала, которые пишут в System.out. Я понимаю, что использование Log4J решит эту проблему, хотя один из наших крупнейших клиентов не использует Log4J и использует собственную реализацию ведения журналов. Есть ли чистый подход, позволяющий им контролировать ведение журнала в нашем клиентском фляге?

Опции, о которых мы подумали: клиенты могут явно устанавливать свойства в клиентских jar-классах для установки уровня ведения журнала (не нравится), наш клиентский jar может читать необязательный файл .properties, который клиенты могут поместить в свой путь к классам (лучше но все равно немного боли).

Ответы [ 2 ]

5 голосов
/ 02 декабря 2009

Не используйте конкретный каркас регистрации, используйте SLF4J , поэтому вы можете обмениваться журналами, если вам это нужно. Сначала я бы начал конвертировать ваши собственные System.out во включенный java.util.logging. Это довольно просто и удобно для большинства нужд.

Если ваш клиент использует другую среду ведения журналов, либо существует мост к slf4j, либо вы можете написать свой собственный.

РЕДАКТИРОВАТЬ: Мы использовали его для упрощения регистрации внешних библиотек, которые использовали LOG4J в java.util.logging, который мы используем.

2 голосов
/ 02 декабря 2009

Взгляните на Apache Commons-Logging. Он обеспечивает тонкий слой изоляции, который позволяет вашему коду использовать согласованный API, а затем подключать регистратор нижнего уровня (включая Log4J или другой).

...