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

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


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

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

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

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

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

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

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

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


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


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

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

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


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

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

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

Я вот всё думаю, а если приложить log4j-over-slf4j.jar, slf4j-log412.jar и log4j.jar то всё взорвётся нафиг, или заработает?
...
Рейтинг: 0 / 0
07.09.2016, 15:59
    #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
07.09.2016, 17:00
    #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
Форумы / Java [игнор отключен] [закрыт для гостей] / Ликбез по логгированию / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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