Я использую 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
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{${LOG_DATEFORMAT_PATTERN:-MM-dd HH:mm:ss.SSS}} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} %style{%12.12t}{magenta} %style{%20.20replace{%c{1.}:%L}{}{}}{cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}
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
}
}
Я ожидаю увидеть в консоли только информационный журнал текущего проекта:
10-10 12:12:20.121 INFO ispatcher-27 main.package.MyClazz:30 This is an info log after calling func
Но я вижу оба сообщения журнала:
10-10 10:10:10.121 TRACE ispatcher-27 myPackage.MyExtendableClass:10 This is a trace log from the library
10-10 12:12:20.121 INFO ispatcher-27 main.package.MyClazz:30 This is an info log after calling func
Подробнее здесь: https://stackoverflow.com/questions/790 ... allow-fine
Как я могу управлять экземплярами регистраторов (для каждого класса) в моих собственных библиотеках, чтобы обеспечить де ⇐ JAVA
Программисты JAVA общаются здесь
1728645445
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
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{${LOG_DATEFORMAT_PATTERN:-MM-dd HH:mm:ss.SSS}} %highlight{${LOG_LEVEL_PATTERN:-%5p}}{FATAL=red blink, ERROR=red, WARN=yellow bold, INFO=green, DEBUG=green bold, TRACE=blue} %style{%12.12t}{magenta} %style{%20.20replace{%c{1.}:%L}{}{}}{cyan} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%rEx}
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
}
}
Я ожидаю увидеть в консоли только информационный журнал текущего проекта:
10-10 12:12:20.121 INFO ispatcher-27 main.package.MyClazz:30 This is an info log after calling func
Но я вижу оба сообщения журнала:
10-10 10:10:10.121 TRACE ispatcher-27 myPackage.MyExtendableClass:10 This is a trace log from the library
10-10 12:12:20.121 INFO ispatcher-27 main.package.MyClazz:30 This is an info log after calling func
Подробнее здесь: [url]https://stackoverflow.com/questions/79046674/how-can-i-manage-logger-instances-per-class-in-my-own-libraries-to-allow-fine[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия