powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Ликбез по логгированию
12 сообщений из 12, страница 1 из 1
Ликбез по логгированию
    #39303796
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всегда думал, что эта тема очень проста, но почитав статейку, понял, что я был излишне самонадеян

http://skipy.ru/useful/logging.html#ref2 SLF4J является приемником для java.util.logging, Log4J, Commons Logging – т.е. его можно подключить "под" эти фреймворки, так, что вывод через них будет перенаправляться в SLF4J. Единственное ограничение – невозможность работы в схеме Log4J >> SLF4J >> Log4J.


Не могли бы объяснить последнюю фразу? что за схема?

я так понимаю, что есть slf4j и он в зависимости от того, что в classpath найдёт, будет использовать конкретную либу.
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39303803
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторSLF4J является более продвинутым, нежели Commons Logging – набор поддерживаемых им возможностей конечных фреймворков шире. Если где-то конкретный конечный фреймфорк не поддерживает каких-либо возможностей – делается их иммитация.

хочу пример
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39303818
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве subj мне вот эта статья нравится
https://habrahabr.ru/post/113145/
В качестве ответа на вопрос, я бы предложил таки посмотреть краткий мануал
http://www.slf4j.org/manual.html

SLF4J это фреймверк, который позволяет врезаться в реализацию с двух сторон
С одной стороны он перехватывает API под который заточен ваш код, будь то Log4j, Commons Logging, или кто ещё.
С другой стороны он может использовать на выходе не своё логирование, а другой фреймверк. Например, если, ваш контейнер других не приемлет.
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39304652
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а вот если у меня куча либ заказчика, использующих внутри log4j, могу я использовать у себя в проекте slf4j и свои классы логгировать через logback ?
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305007
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чего-то я запутался.

я понял, что slf4j нужен если у нас используется один логгинговый фреймворк (ну например log4j), и мы потом безболезненно можем заменить его на другой (logback например), и не надо ничего будет в коде править. При этом в коде используем классы из библиотеки slf4j.

А можем ли мы держать зоопарк логгинговых фреймворков.

Что делать если либа использует какой-то конкретный фрймворк логгирования?
или так уже не делают и каждая нормальная либа использует slf4j внутри ?
в спринге вроде commons logging врублен пока его не отрубишь.
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305050
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость


Может кто-то детально объяснить эту картинку?
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305140
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и эта


верхняя левая картинка понятна, а вот две других как-то нет. зачем ещё adaptation level нужен непонятно.

это logback такой особенный, что может работать без adaptation layer ?
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305176
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
что такое
slf4j-log412.jar ?
slf4j-jdk14 ?
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305180
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questioner,

Биндинги для log4j 12 и Java Logger-а, который появился в JDK 1.4
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305272
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerи эта


верхняя левая картинка понятна, а вот две других как-то нет. зачем ещё adaptation level нужен непонятно.

это logback такой особенный, что может работать без adaptation layer ?

Да, т.к. logback специально сделан для работы "под" slf4j. А log4j/jul - не могут, им надо прослойку.

Я вот всё думаю, а если приложить log4j-over-slf4j.jar, slf4j-log412.jar и log4j.jar то всё взорвётся нафиг, или заработает?
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305321
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot Alexey Tomin]questioner

Я вот всё думаю, а если приложить log4j-over-slf4j.jar, slf4j-log412.jar и log4j.jar то всё взорвётся нафиг, или заработает?


http://www.slf4j.org/codes.html#log4jDelegationLoop he purpose of slf4j-jcl module is to delegate or redirect calls made to an SLF4J logger to jakarta commons logging (JCL). The purpose of the jcl-over-slf4j module is to redirect calls made to a JCL logger to SLF4J. If SLF4J is bound with slf4j-jcl.jar and jcl-over-slf4j.jar is also present on the class path, then a StackOverflowError will inevitably occur immediately after the first invocation of an SLF4J or a JCL logger.
Here is how the exception might look like:
Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.hashCode(String.java:1482)
at java.util.HashMap.get(HashMap.java:300)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:67)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:249)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:289)
at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69)
at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:249)
at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155)
subsequent lines omitted...
SINCE 1.5.11 SLF4J software preempts the inevitable stack overflow error by throwing an exception with details about the actual cause of the problem. This is deemed to be better than leaving the user wondering about the reasons of the StackOverflowError.
For more background on this topic see Bridging legacy APIs.
...
Рейтинг: 0 / 0
Ликбез по логгированию
    #39305359
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
везде пишут, что в спринге надо делать эксклуд commons logging. Смотрю у нас используются такие зависимости:

Код: java
1.
2.
3.
4.
5.
6.
dependencies {
        // Logging
        compile "org.slf4j:slf4j-api:$slf4jVersion"
        compile "log4j:log4j:$log4jVersion"
        compile "org.slf4j:slf4j-log4j12:$slf4jVersion"
   }



http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-logging commons-logging и http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#overview-logging jcl-over-slf4full text search-ем по проекту не ищется.

в доке спринга пишут, что должно быть так:

автор<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>

Вопрос как у нас вообще всё это работает?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Ликбез по логгированию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]