|
|
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
Всегда думал, что эта тема очень проста, но почитав статейку, понял, что я был излишне самонадеян http://skipy.ru/useful/logging.html#ref2 SLF4J является приемником для java.util.logging, Log4J, Commons Logging – т.е. его можно подключить "под" эти фреймворки, так, что вывод через них будет перенаправляться в SLF4J. Единственное ограничение – невозможность работы в схеме Log4J >> SLF4J >> Log4J. Не могли бы объяснить последнюю фразу? что за схема? я так понимаю, что есть slf4j и он в зависимости от того, что в classpath найдёт, будет использовать конкретную либу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2016, 13:28 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
авторSLF4J является более продвинутым, нежели Commons Logging – набор поддерживаемых им возможностей конечных фреймворков шире. Если где-то конкретный конечный фреймфорк не поддерживает каких-либо возможностей – делается их иммитация. хочу пример ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2016, 13:32 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
В качестве subj мне вот эта статья нравится https://habrahabr.ru/post/113145/ В качестве ответа на вопрос, я бы предложил таки посмотреть краткий мануал http://www.slf4j.org/manual.html SLF4J это фреймверк, который позволяет врезаться в реализацию с двух сторон С одной стороны он перехватывает API под который заточен ваш код, будь то Log4j, Commons Logging, или кто ещё. С другой стороны он может использовать на выходе не своё логирование, а другой фреймверк. Например, если, ваш контейнер других не приемлет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.09.2016, 13:56 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, а вот если у меня куча либ заказчика, использующих внутри log4j, могу я использовать у себя в проекте slf4j и свои классы логгировать через logback ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 18:17 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
Чего-то я запутался. я понял, что slf4j нужен если у нас используется один логгинговый фреймворк (ну например log4j), и мы потом безболезненно можем заменить его на другой (logback например), и не надо ничего будет в коде править. При этом в коде используем классы из библиотеки slf4j. А можем ли мы держать зоопарк логгинговых фреймворков. Что делать если либа использует какой-то конкретный фрймворк логгирования? или так уже не делают и каждая нормальная либа использует slf4j внутри ? в спринге вроде commons logging врублен пока его не отрубишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 11:32 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
и эта верхняя левая картинка понятна, а вот две других как-то нет. зачем ещё adaptation level нужен непонятно. это logback такой особенный, что может работать без adaptation layer ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 13:08 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
что такое slf4j-log412.jar ? slf4j-jdk14 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 13:34 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
questioner, Биндинги для log4j 12 и Java Logger-а, который появился в JDK 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 13:38 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
questionerи эта верхняя левая картинка понятна, а вот две других как-то нет. зачем ещё adaptation level нужен непонятно. это logback такой особенный, что может работать без adaptation layer ? Да, т.к. logback специально сделан для работы "под" slf4j. А log4j/jul - не могут, им надо прослойку. Я вот всё думаю, а если приложить log4j-over-slf4j.jar, slf4j-log412.jar и log4j.jar то всё взорвётся нафиг, или заработает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 15:21 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
[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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 15:59 |
|
||
|
Ликбез по логгированию
|
|||
|---|---|---|---|
|
#18+
везде пишут, что в спринге надо делать эксклуд commons logging. Смотрю у нас используются такие зависимости: Код: java 1. 2. 3. 4. 5. 6. 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> Вопрос как у нас вообще всё это работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 17:00 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=89&tid=2123743]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 350ms |

| 0 / 0 |
