Как я могу управлять экземплярами регистраторов (для каждого класса) в моих собственных библиотеках, чтобы обеспечить деJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как я могу управлять экземплярами регистраторов (для каждого класса) в моих собственных библиотеках, чтобы обеспечить де

Сообщение Anonymous »

Я использую 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»