Как я могу управлять экземплярами регистраторов (для каждого класса) в моих собственных библиотеках, чтобы обеспечить де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»