Я использую Log4j для входа в проект Scala, где каждый класс создает свой экземпляр журнала с помощью LoggerFactory.getLogger(this.getClass.getName.stripSuffix("$")). В другом проекте я расширяю класс из этой библиотеки и использую его средство ведения журнала по умолчанию, которое ведет журнал на уровне трассировки.
В моем текущем проекте мне нужен более детальный контроль над средствами ведения журнала. В частности, я хочу установить уровень ведения журнала библиотеки на info, чтобы журналы трассировки не отображались. Как я могу настроить средства ведения журнала для достижения такого детального контроля над уровнями ведения журнала?
Чтобы контролировать уровни ведения журнала, я создал в своей конфигурации специальный регистратор, предназначенный для пакета расширенного класса из библиотеку (library.package1.package2.package3...) и установите для нее уровень info. У меня также есть средство ведения журнала верхнего уровня для моего текущего проекта (thisProject.package), настроенное на трассировку.
Я ожидаю, что в выходных данных не появятся журналы трассировки из библиотеки, хотя я Расширяю свои занятия в моем проекте. Однако я все еще вижу журналы трассировки из библиотеки. Как я могу гарантировать, что библиотека ведет журналы только на информационном уровне, сохраняя при этом ведение журнала трассировки для моего проекта?
Вот моя конфигурация журнала (намеренно отсутствуют некоторые значения конфигурации, такие как макет ):
status = error
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
loggers = library-logger, project-logger
logger.project-logger.name = project.main
logger.project-logger.level = trace
logger.library-logger.name = library.project.main.myPackage
logger.library-logger.level = info
rootLogger.level = error
rootLogger.appenderRefs = stdout
rootLogger.appenderRef.stdout.ref = STDOUT
Это класс, который я расширяю в проекте из библиотеки:
package library.project.main.myPackage
abstract class MyExtendableClass {
protected lazy val log = com.typesafe.scalalogging.Logger(LoggerFactory.getLogger(
this.getClass.getName.stripSuffix("$")
))
def func = {
log.trace("This is a trace log from the library")
}
}
И вот что я делаю в текущем проекте:
package project.main.package
import library.project.main.myPackage.MyExtendableClass
class MyClazz extends MyExtendableClass {
def myInitFunc = {
// call func
func
log.info("This is an info log after calling func")
// do other stuff
}
}
Я ожидаю увидеть в консоли только информационный журнал текущего проекта:
INFO project.main.package.MyClazz This is an info log after calling func
Но я вижу оба сообщения журнала:
TRACE library.project.main.myPackage.MyExtendableClass This is a trace log from the library
INFO project.main.package.MyClazz This is an info log after calling func
Подробнее здесь: https://stackoverflow.com/questions/790 ... allow-fine
Как я могу управлять экземплярами регистраторов (для каждого класса) в моих собственных библиотеках, чтобы обеспечить де ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение