Владимир Красильщик, luxoft, Санкт...
TRANSCRIPT
![Page 1: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/1.jpg)
1
Владимир Красильщик, Luxoft, Санкт-Петербург
Что надо знать о логировании прагматичному Java-программисту
Москва, 2016
![Page 2: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/2.jpg)
О чем доклад
2
![Page 3: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/3.jpg)
О чем доклад• Что было не так с логированием на проекте Х
2
![Page 4: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/4.jpg)
О чем доклад• Что было не так с логированием на проекте Х
• Что мы захотели изменить
2
![Page 5: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/5.jpg)
О чем доклад• Что было не так с логированием на проекте Х
• Что мы захотели изменить
• Что у нас получилось
2
![Page 6: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/6.jpg)
О чем доклад• Что было не так с логированием на проекте Х
• Что мы захотели изменить
• Что у нас получилось
• Чему мы научились
2
![Page 7: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/7.jpg)
Два слова о проекте Х
3
![Page 8: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/8.jpg)
Два слова о проекте Х
• ~40 микросервисов
3
![Page 9: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/9.jpg)
Два слова о проекте Х
• ~40 микросервисов
• >16 лет в продакшене
3
![Page 10: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/10.jpg)
Два слова о проекте Х
• ~40 микросервисов
• >16 лет в продакшене
• ~20 сервер-сайд Java-девелоперов
3
![Page 11: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/11.jpg)
Что было
4
![Page 12: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/12.jpg)
Что было
4
В разных микросервисах использовались разные библиотеки логирования
![Page 13: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/13.jpg)
Что было
4
В разных микросервисах использовались разные библиотеки логирования
• Плюс: становишься “недоэкспертом” в разных библиотеках логирования …
![Page 14: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/14.jpg)
Что было
4
В разных микросервисах использовались разные библиотеки логирования
• Плюс: становишься “недоэкспертом” в разных библиотеках логирования …
• Минус: big data, high-load, reactive, пиво и дети проходят мимо пока …
![Page 15: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/15.jpg)
Что было
4
В разных микросервисах использовались разные библиотеки логирования
• Плюс: становишься “недоэкспертом” в разных библиотеках логирования …
• Минус: big data, high-load, reactive, пиво и дети проходят мимо пока …
… пока ты вспоминаешь как правильно писать в этом микросервисе 1) log.info(“userName is {}”, name); 2) log.info(String.format(“userName is %s”, name));
![Page 16: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/16.jpg)
Что было
5
![Page 17: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/17.jpg)
Что было
5
“Jars Hell” библиотек логирования
![Page 18: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/18.jpg)
Что было
5
“Jars Hell” библиотек логирования
• Плюс: очень интересно разбираться в хитросплетениях “класспасостроения”
![Page 19: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/19.jpg)
Что было
5
“Jars Hell” библиотек логирования
• Плюс: очень интересно разбираться в хитросплетениях “класспасостроения”
• Минус: забываешь в каком класспасе, тьфу, классе твой ребёнок
![Page 20: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/20.jpg)
6
|~/microService1 |---/apache-tomcat |-------/bin |-------/conf |-------/logs |~/microService2 |---/apache-tomcat/ |-------/bin |-------/conf |-------/logs |~/microServiceN |---/apache-tomcat |-------/bin |-------/conf |-------/logs
Что было
![Page 21: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/21.jpg)
7
Что было
![Page 22: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/22.jpg)
7
Архивирование логов делалось ручками: crontab + sh-скрипт
Что было
![Page 23: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/23.jpg)
7
• Плюс: ты контролируешь все сам
Архивирование логов делалось ручками: crontab + sh-скрипт
Что было
![Page 24: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/24.jpg)
7
• Минус: но не контролируешь админов, которые …
• Плюс: ты контролируешь все сам
Архивирование логов делалось ручками: crontab + sh-скрипт
Что было
![Page 25: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/25.jpg)
7
• Минус: но не контролируешь админов, которые …
• Плюс: ты контролируешь все сам
Архивирование логов делалось ручками: crontab + sh-скрипт
Что было
… которые все-равно могут снести gnu утилиту, используемую в sh-скрипте в продакшене или удалить расписание из crontab
![Page 26: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/26.jpg)
Что было
8
![Page 27: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/27.jpg)
Что было
8
|~/microServiceK|---/apache-tomcat|-------/bin|-------/conf|-------/logs|------------/archive
![Page 28: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/28.jpg)
Что было
8
|~/microServiceK|---/apache-tomcat|-------/bin|-------/conf|-------/logs|------------/archive
• Плюс: обновление томката до новой версии становится интересной задачей
![Page 29: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/29.jpg)
Что было
8
|~/microServiceK|---/apache-tomcat|-------/bin|-------/conf|-------/logs|------------/archive
• Плюс: обновление томката до новой версии становится интересной задачей
• Минус: “Здесь было жестоко убито время”*
* - надпись на парте в родном СПбГЭТУ “ЛЭТИ”
![Page 30: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/30.jpg)
Что было
9
![Page 31: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/31.jpg)
Что было
9
Свой велосипед со статическими методами Log.debug(),Log.info(),…
![Page 32: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/32.jpg)
Что было
9
Свой велосипед со статическими методами Log.debug(),Log.info(),…
• Плюс: не надо явно указывать имя логера
![Page 33: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/33.jpg)
Что было
9
Свой велосипед со статическими методами Log.debug(),Log.info(),…
• Плюс: не надо явно указывать имя логера
• Минус: ненадежная имплементация …
… new Exception().getStackTrace()[4].getClassName()
![Page 34: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/34.jpg)
Что захотели изменить
10
![Page 35: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/35.jpg)
Что захотели изменить• Одна технологию логирования на все микросервисы
10
![Page 36: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/36.jpg)
Что захотели изменить• Одна технологию логирования на все микросервисы
• Избавиться от crontab+sh для архивирования логов
10
![Page 37: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/37.jpg)
Что захотели изменить• Одна технологию логирования на все микросервисы
• Избавиться от crontab+sh для архивирования логов
• Упорядочить архивы всех микросервисов
10
![Page 38: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/38.jpg)
Что захотели изменить• Одна технологию логирования на все микросервисы
• Избавиться от crontab+sh для архивирования логов
• Упорядочить архивы всех микросервисов
• Удобно просматривать и скачивать логи для анализа
10
![Page 39: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/39.jpg)
Что захотели изменить• Одна технологию логирования на все микросервисы
• Избавиться от crontab+sh для архивирования логов
• Упорядочить архивы всех микросервисов
• Удобно просматривать и скачивать логи для анализа
• И уже забыть про логи и начать жить …
10
![Page 40: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/40.jpg)
11
![Page 41: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/41.jpg)
А какие библиотеки есть?
12
![Page 42: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/42.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
![Page 43: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/43.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
![Page 44: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/44.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
![Page 45: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/45.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
4. log4j 2
![Page 46: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/46.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
4. log4j 2
![Page 47: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/47.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
4. log4j 2
![Page 48: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/48.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
4. log4j 2
5. Apache Commons Logging (JCL)
![Page 49: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/49.jpg)
А какие библиотеки есть?
12
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
4. log4j 2
5. Apache Commons Logging (JCL)
6. Simple Logging Facade For Java (SLF4J)
![Page 50: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/50.jpg)
А какие библиотеки есть?
13
1. Java Util Logging (JUL/JDK)
2. log4j
3. Logback
4. log4j 2
5. Apache Commons Logging (JCL)
6. Simple Logging Facade For Java (SLF4J)
![Page 51: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/51.jpg)
14
![Page 52: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/52.jpg)
Общий подход в логировании на 1-й квартал 2016 года
15
![Page 53: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/53.jpg)
Общий подход в логировании на 1-й квартал 2016 года
15
• Logger
![Page 54: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/54.jpg)
Общий подход в логировании на 1-й квартал 2016 года
15
• Logger • Appender
![Page 55: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/55.jpg)
Общий подход в логировании на 1-й квартал 2016 года
15
• Logger • Appender
• “in-team-ная связь” Logger—>Appender
![Page 56: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/56.jpg)
16
Logger
![Page 57: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/57.jpg)
Logger logger = LoggerFactory.getLogger(name);
16
Logger
![Page 58: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/58.jpg)
Logger logger = LoggerFactory.getLogger(name);
name = “vasiliy_pupkin”;
16
Logger
![Page 59: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/59.jpg)
Logger logger = LoggerFactory.getLogger(name);
name = “vasiliy_pupkin”;
name = SomeClass.class.getName();
16
Logger
![Page 60: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/60.jpg)
Logger logger = LoggerFactory.getLogger(name);
name = “vasiliy_pupkin”;
name = SomeClass.class.getName();
“ru.spb.luxoft.x.y.z.SomeClass”
16
Logger
![Page 61: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/61.jpg)
Logger logger = LoggerFactory.getLogger(name);
name = “vasiliy_pupkin”;
name = SomeClass.class.getName();
“ru.spb.luxoft.x.y.z.SomeClass”
“ru.spb.luxoft” это родитель для “ru.spb.luxoft.x.y.z.SomeClass”
16
Logger
![Page 62: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/62.jpg)
Logger logger = LoggerFactory.getLogger(name);
name = “vasiliy_pupkin”;
name = SomeClass.class.getName();
“ru.spb.luxoft.x.y.z.SomeClass”
“ru.spb.luxoft” это родитель для “ru.spb.luxoft.x.y.z.SomeClass”
root<—ru<—spb<—luxoft<—x<—y<—z<—SomeClass
16
Logger
![Page 63: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/63.jpg)
Logger logger = LoggerFactory.getLogger(name);
name = “vasiliy_pupkin”;
name = SomeClass.class.getName();
“ru.spb.luxoft.x.y.z.SomeClass”
“ru.spb.luxoft” это родитель для “ru.spb.luxoft.x.y.z.SomeClass”
root<—ru<—spb<—luxoft<—x<—y<—z<—SomeClass
root<—vasiliy_pupkin
16
Logger
![Page 64: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/64.jpg)
17
Logger
![Page 65: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/65.jpg)
logger.info(“hello”); logger.debug(“hello”);
17
Logger
![Page 66: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/66.jpg)
logger.info(“hello”); logger.debug(“hello”);
Event: message = ”hello” Level = Level.INFO
17
Logger
![Page 67: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/67.jpg)
logger.info(“hello”); logger.debug(“hello”);
Event: message = ”hello” Level = Level.INFO
Уровни “относительной ужасности”:error—>warn—>info—>debug—>fine
17
Logger
![Page 68: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/68.jpg)
Appender
18
![Page 69: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/69.jpg)
Appender• Appender - знает куда отправлять события
18
![Page 70: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/70.jpg)
Appender• Appender - знает куда отправлять события
• Console
18
![Page 71: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/71.jpg)
Appender• Appender - знает куда отправлять события
• Console
• File
18
![Page 72: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/72.jpg)
Appender• Appender - знает куда отправлять события
• Console
• File
• Socket
18
![Page 73: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/73.jpg)
Appender• Appender - знает куда отправлять события
• Console
• File
• Socket
• Database
18
![Page 74: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/74.jpg)
Appender• Appender - знает куда отправлять события
• Console
• File
• Socket
• Database
• Abstract-Spherical-Horse-In-Vacuum
18
![Page 75: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/75.jpg)
“in-team-ная связь” Logger—>Appender
19
![Page 76: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/76.jpg)
“in-team-ная связь” Logger—>Appender
ru.spb.luxoft.x.y.z.SomeClass—>fb (1)
19
![Page 77: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/77.jpg)
“in-team-ная связь” Logger—>Appender
ru.spb.luxoft.x.y.z.SomeClass—>fb (1)
ru.spb.luxoft—>vk (2)
19
![Page 78: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/78.jpg)
“in-team-ная связь” Logger—>Appender
ru.spb.luxoft.x.y.z.SomeClass—>fb (1)
ru.spb.luxoft—>vk (2)
root—>ok (3)
19
![Page 79: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/79.jpg)
“in-team-ная связь” Logger—>Appender
ru.spb.luxoft.x.y.z.SomeClass—>fb (1)
ru.spb.luxoft—>vk (2)
root—>ok (3)
LoggerFactory.getLogger(SomeClass.class) .info(“I <3 Big Data!”)?
19
![Page 80: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/80.jpg)
“in-team-ная связь” Logger—>Appender
ru.spb.luxoft.x.y.z.SomeClass—>fb (1)
ru.spb.luxoft—>vk (2)
root—>ok (3)
LoggerFactory.getLogger(SomeClass.class) .info(“I <3 Big Data!”)?
root<—ru<—spb<—luxoft<—x<—y<—z<—SomeClass
19
![Page 81: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/81.jpg)
“in-team-ная связь” Logger—>Appender
ru.spb.luxoft.x.y.z.SomeClass—>fb (1)
ru.spb.luxoft—>vk (2)
root—>ok (3)
LoggerFactory.getLogger(SomeClass.class) .info(“I <3 Big Data!”)?
root<—ru<—spb<—luxoft<—x<—y<—z<—SomeClass
additivity …
19
![Page 82: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/82.jpg)
20
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 83: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/83.jpg)
21
Logger
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 84: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/84.jpg)
22
LoggerEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 85: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/85.jpg)
23
Logger AppenderEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 86: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/86.jpg)
24
Logger AppenderEvent
additivity=true
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 87: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/87.jpg)
25
Logger AppenderEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
additivity=true
Propagate
![Page 88: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/88.jpg)
26
Logger AppenderEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
Propagate
additivity=true
Parent Logger
![Page 89: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/89.jpg)
27
“in-team-ная связь” Logger—>Appender
![Page 90: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/90.jpg)
• Уровень “относительной ужасности” in-team-ной связи
27
“in-team-ная связь” Logger—>Appender
![Page 91: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/91.jpg)
• Уровень “относительной ужасности” in-team-ной связи
• Logger logger = LoggerFactory.getLogger(“vasiliy_pupkin”); vasiliy_pupkin—>Abstract-Spherical-Horse-In-Vacuum Level = Level.INFO
27
“in-team-ная связь” Logger—>Appender
![Page 92: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/92.jpg)
• Уровень “относительной ужасности” in-team-ной связи
• Logger logger = LoggerFactory.getLogger(“vasiliy_pupkin”); vasiliy_pupkin—>Abstract-Spherical-Horse-In-Vacuum Level = Level.INFO
• logger.error() - V logger.warn() - V logger.info() - V error—>warn—>info—>debug—>finelogger.debug() - X logger.fine() - X
27
“in-team-ная связь” Logger—>Appender
![Page 93: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/93.jpg)
Что получилось и чему научились
28
![Page 94: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/94.jpg)
SLF4J
29
![Page 95: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/95.jpg)
SLF4J
29
API в slf4j-api.jar
![Page 96: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/96.jpg)
SLF4J
29
API в slf4j-api.jarLogger logger = LoggerFactory.getLogger(SomeClass.class); logger.info(“hello”);
![Page 97: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/97.jpg)
SLF4J
30
![Page 98: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/98.jpg)
SLF4J
30
Binding
![Page 99: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/99.jpg)
SLF4J
30
Binding• logback-classic-1.1.3.jar
![Page 100: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/100.jpg)
SLF4J
30
Binding• logback-classic-1.1.3.jar
• slf4j-log4j12-1.7.12.jar
![Page 101: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/101.jpg)
SLF4J
30
Binding• logback-classic-1.1.3.jar
• slf4j-log4j12-1.7.12.jar
• slf4j-jdk14-1.7.12.jar
![Page 102: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/102.jpg)
SLF4J
30
Binding• logback-classic-1.1.3.jar
• slf4j-log4j12-1.7.12.jar
• slf4j-jdk14-1.7.12.jar
• slf4j-jcl-1.7.12.jar
![Page 103: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/103.jpg)
Troubleshooting Multiple Bindings
31
![Page 104: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/104.jpg)
Troubleshooting Multiple BindingsSLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/export/apps/userR/serviceK/apache-tomee-webprofile/lib/slf4j-jdk14-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/export/apps/userR/serviceK/apache-tomee-webprofile/lib/logback-classic-1.0.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.JDK14LoggerFactory]
31
![Page 105: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/105.jpg)
32
Troubleshooting Multiple Bindings
![Page 106: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/106.jpg)
mvn dependency:tree -DoutputFile=tree.txt-Dincludes=org.slf4j -Dverbose > output
32
Troubleshooting Multiple Bindings
![Page 107: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/107.jpg)
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
<version>4.7.1</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-jdk14</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>33
Troubleshooting Multiple Bindings
![Page 108: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/108.jpg)
Нежданчик #0: некоторые либы используют явно log4j или JUL/JDK
34
![Page 109: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/109.jpg)
Нежданчик #0: некоторые либы используют явно log4j или JUL/JDK
• Что Spring использует для логирования?
34
![Page 110: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/110.jpg)
Нежданчик #0: некоторые либы используют явно log4j или JUL/JDK
• Что Spring использует для логирования?
• Spring использует JCL!
34
![Page 111: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/111.jpg)
Bridge в SLF4J
35
![Page 112: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/112.jpg)
Bridge в SLF4J
• jcl-over-slf4j.jar
35
![Page 113: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/113.jpg)
Bridge в SLF4J
• jcl-over-slf4j.jar
• log4j-over-slf4j.jar
35
![Page 114: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/114.jpg)
Bridge в SLF4J
• jcl-over-slf4j.jar
• log4j-over-slf4j.jar
• jul-to-slf4j.jar (ничего не смущает?)
35
![Page 115: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/115.jpg)
36
Bridge в SLF4J - проблемы
![Page 116: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/116.jpg)
• не работает, если конфигурация сделана программно
36
Bridge в SLF4J - проблемы
![Page 117: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/117.jpg)
• не работает, если конфигурация сделана программно
• jul-to-slf4j.jar && slf4j-jdk14.jar —> StackOverflowErrorlog4j-over-slf4j.jar && slf4j-log4j12.jar —> StackOverflowError
36
Bridge в SLF4J - проблемы
![Page 118: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/118.jpg)
• не работает, если конфигурация сделана программно
• jul-to-slf4j.jar && slf4j-jdk14.jar —> StackOverflowErrorlog4j-over-slf4j.jar && slf4j-log4j12.jar —> StackOverflowError
• jul-to-slf4j.jar —> SLF4JBridgeHandler на root и …
36
Bridge в SLF4J - проблемы
![Page 119: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/119.jpg)
• не работает, если конфигурация сделана программно
• jul-to-slf4j.jar && slf4j-jdk14.jar —> StackOverflowErrorlog4j-over-slf4j.jar && slf4j-log4j12.jar —> StackOverflowError
• jul-to-slf4j.jar —> SLF4JBridgeHandler на root и …
• … и проседает производительность
36
Bridge в SLF4J - проблемы
![Page 120: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/120.jpg)
“Швейцарский” файловый аппендер
37
![Page 121: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/121.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
37
![Page 122: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/122.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
37
![Page 123: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/123.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
37
![Page 124: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/124.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
37
![Page 125: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/125.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
<maxHistory>90</maxHistory> (5)
37
![Page 126: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/126.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
<maxHistory>90</maxHistory> (5)
</rollingPolicy>
37
![Page 127: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/127.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
<maxHistory>90</maxHistory> (5)
</rollingPolicy>
<encoder>
37
![Page 128: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/128.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
<maxHistory>90</maxHistory> (5)
</rollingPolicy>
<encoder>
<pattern>%d [%22.22thread] [%-5level] [%logger{0}] %msg%n%ex</pattern> (6)
37
![Page 129: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/129.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
<maxHistory>90</maxHistory> (5)
</rollingPolicy>
<encoder>
<pattern>%d [%22.22thread] [%-5level] [%logger{0}] %msg%n%ex</pattern> (6)
</encoder>
37
![Page 130: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/130.jpg)
“Швейцарский” файловый аппендер <appender name="SERVICE" class=“ch.qos.logback.core.rolling.RollingFileAppender"> (1)
<file>${catalina.base}/logs/serviceK.log</file> (2)
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> (3)
<fileNamePattern>${user.home}/archive/serviceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz</fileNamePattern> (4)
<maxHistory>90</maxHistory> (5)
</rollingPolicy>
<encoder>
<pattern>%d [%22.22thread] [%-5level] [%logger{0}] %msg%n%ex</pattern> (6)
</encoder>
</appender>
37
![Page 131: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/131.jpg)
Миграционые службы
38
![Page 132: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/132.jpg)
Миграционые службы• http://www.slf4j.org/migrator.html - миграция на SLF4J из JCL, log4j или JUL/JDK
38
![Page 133: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/133.jpg)
Миграционые службы• http://www.slf4j.org/migrator.html - миграция на SLF4J из JCL, log4j или JUL/JDK
Ограничения: 1) fatal() - X2) Object в параметрах - X3) 2 логера в одной строке кода - X
38
![Page 134: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/134.jpg)
Миграционые службы• http://www.slf4j.org/migrator.html - миграция на SLF4J из JCL, log4j или JUL/JDK
Ограничения: 1) fatal() - X2) Object в параметрах - X3) 2 логера в одной строке кода - X
• http://logback.qos.ch/translator/ - миграция на Logback из log4j
38
![Page 135: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/135.jpg)
Миграционые службы• http://www.slf4j.org/migrator.html - миграция на SLF4J из JCL, log4j или JUL/JDK
Ограничения: 1) fatal() - X2) Object в параметрах - X3) 2 логера в одной строке кода - X
• http://logback.qos.ch/translator/ - миграция на Logback из log4j
Ограничения: 1) только из конфигурации через *.properties2) генерит немного кривую конфигурацию Logback
38
![Page 136: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/136.jpg)
Нежданчик #1: GWT
39
![Page 137: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/137.jpg)
Нежданчик #1: GWT• Прошёлся migrator-ом по всему коду
39
![Page 138: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/138.jpg)
Нежданчик #1: GWT• Прошёлся migrator-ом по всему коду
• В девелоп моде все пучком
39
![Page 139: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/139.jpg)
Нежданчик #1: GWT• Прошёлся migrator-ом по всему коду
• В девелоп моде все пучком
• При сборке продакшена падает ошибка компиляции класса org.slf4j.LoggerFactory
39
![Page 140: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/140.jpg)
Нежданчик #1: GWT• Прошёлся migrator-ом по всему коду
• В девелоп моде все пучком
• При сборке продакшена падает ошибка компиляции класса org.slf4j.LoggerFactory
• JUL/JDK надо оставить в GWT UI коде чтобы генерировалось console.debug() в javascript
39
![Page 141: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/141.jpg)
Нежданчик #2: Hibernate
40
![Page 142: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/142.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
40
![Page 143: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/143.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
• show_sql=true —> и тишина
40
![Page 144: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/144.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
• show_sql=true —> и тишина
• Добавил “in-team-ной связи” для логеров Hibernate —> и тишина
40
![Page 145: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/145.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
• show_sql=true —> и тишина
• Добавил “in-team-ной связи” для логеров Hibernate —> и тишина
• Hibernate 4.X.X+ использует JBoss Logging!
40
![Page 146: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/146.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
• show_sql=true —> и тишина
• Добавил “in-team-ной связи” для логеров Hibernate —> и тишина
• Hibernate 4.X.X+ использует JBoss Logging!
• JBoss Logging - это ещё один адаптер!
40
![Page 147: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/147.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
• show_sql=true —> и тишина
• Добавил “in-team-ной связи” для логеров Hibernate —> и тишина
• Hibernate 4.X.X+ использует JBoss Logging!
• JBoss Logging - это ещё один адаптер!
• Приоритеты: JBoss—>log4j—>SLF4J—>JUL/JDK
40
![Page 148: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/148.jpg)
Нежданчик #2: Hibernate• Проблема: надо подебажить запросы Hibernate после перехода на новую версию
• show_sql=true —> и тишина
• Добавил “in-team-ной связи” для логеров Hibernate —> и тишина
• Hibernate 4.X.X+ использует JBoss Logging!
• JBoss Logging - это ещё один адаптер!
• Приоритеты: JBoss—>log4j—>SLF4J—>JUL/JDK
• -Dorg.jboss.logging.provider=slf4j (Не делайте так!)40
![Page 149: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/149.jpg)
Нежданчик #3: временная недетерминированность
41
![Page 150: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/150.jpg)
Нежданчик #3: временная недетерминированность
<fileNamePattern>${user.home}/archive/microServiceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz </fileNamePattern>
41
![Page 151: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/151.jpg)
Нежданчик #3: временная недетерминированность
<fileNamePattern>${user.home}/archive/microServiceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz </fileNamePattern>
• В результате архивы появлялись, но в 00:13, 00:21, 07:14, … Но почему?
41
![Page 152: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/152.jpg)
Нежданчик #3: временная недетерминированность
<fileNamePattern>${user.home}/archive/microServiceK/%d{yyyy-MM-dd}/serviceK-%d{yyyy-MM-dd_HH-mm,aux}.log.gz </fileNamePattern>
• В результате архивы появлялись, но в 00:13, 00:21, 07:14, … Но почему?
• Архивирование, ротация и подчистка файлов не выполняются по расписанию! А тогда как?
41
![Page 153: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/153.jpg)
42
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 154: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/154.jpg)
43
Logger
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 155: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/155.jpg)
44
LoggerEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 156: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/156.jpg)
45
LoggerEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
Appender
![Page 157: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/157.jpg)
46
LoggerEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
Time& Size
ChecksAppender
![Page 158: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/158.jpg)
47
LoggerEvent Rotate
ZipCleanup
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
Time& Size
ChecksAppender
![Page 159: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/159.jpg)
Mapped Diagnostic Context (MDC)
48
![Page 160: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/160.jpg)
Mapped Diagnostic Context (MDC)
MDC.put("personalId", personalId);
48
![Page 161: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/161.jpg)
Mapped Diagnostic Context (MDC)
MDC.put("personalId", personalId);
<pattern>%X{personalId} - %m%n</pattern>
48
![Page 162: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/162.jpg)
Mapped Diagnostic Context (MDC)
MDC.put("personalId", personalId);
<pattern>%X{personalId} - %m%n</pattern>
MDC.remove(“personalId");
48
![Page 163: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/163.jpg)
Страна советов
49
![Page 164: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/164.jpg)
Страна советов• Отдельный файл для всех внешних коммуникаций
49
![Page 165: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/165.jpg)
Страна советов• Отдельный файл для всех внешних коммуникаций
• AOP / BCI - для массового логирования методов
49
![Page 166: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/166.jpg)
Страна советов• Отдельный файл для всех внешних коммуникаций
• AOP / BCI - для массового логирования методов
• Мониторинг: log.warn(Alerts.YELLOW(“Bad thing’s happened”, exc)); log.error(Alerts.RED(“Very bad thing’s happened”, exc));
49
![Page 167: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/167.jpg)
Страна советов• Отдельный файл для всех внешних коммуникаций
• AOP / BCI - для массового логирования методов
• Мониторинг: log.warn(Alerts.YELLOW(“Bad thing’s happened”, exc)); log.error(Alerts.RED(“Very bad thing’s happened”, exc));
• Heart-beat thread - log.info(“I’m alive!”);
49
![Page 168: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/168.jpg)
Страна советов• Отдельный файл для всех внешних коммуникаций
• AOP / BCI - для массового логирования методов
• Мониторинг: log.warn(Alerts.YELLOW(“Bad thing’s happened”, exc)); log.error(Alerts.RED(“Very bad thing’s happened”, exc));
• Heart-beat thread - log.info(“I’m alive!”);
• Решение для просмотра и скачивания логов …
49
![Page 169: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/169.jpg)
Логирование в микросервисах и кластере
50
![Page 170: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/170.jpg)
Логирование в микросервисах и кластере
• Микросервисы: специализированные взаимодействующие компоненты
50
![Page 171: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/171.jpg)
Логирование в микросервисах и кластере
• Микросервисы: специализированные взаимодействующие компоненты
• Кластер: параллелизм+отказоустойчивость+высокая доступность
50
![Page 172: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/172.jpg)
Логирование в микросервисах и кластере
• Микросервисы: специализированные взаимодействующие компоненты
• Кластер: параллелизм+отказоустойчивость+высокая доступность
50
• Logstash Elastic SearchKibana
![Page 173: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/173.jpg)
Логирование в микросервисах и кластере
• Микросервисы: специализированные взаимодействующие компоненты
• Кластер: параллелизм+отказоустойчивость+высокая доступность
50
• Appender может писать в базу данных, JMS и т. д.
• Logstash Elastic SearchKibana
![Page 174: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/174.jpg)
Логирование в микросервисах и кластере
• Микросервисы: специализированные взаимодействующие компоненты
• Кластер: параллелизм+отказоустойчивость+высокая доступность
50
• Appender может писать в базу данных, JMS и т. д.
• Logstash Elastic SearchKibana
• Splunk или Logmatic
![Page 175: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/175.jpg)
Логирование в облаке
51
![Page 176: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/176.jpg)
Логирование в облаке
51
AWS, OpenShift, Jelastic, Microsoft Azure, и т д
![Page 177: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/177.jpg)
Логирование в облаке
Убедитесь, что апгрейд или выключение виртуалки, а также изменения инфраструктуры не убьют Ваши драгоценные логи и архивы!
51
AWS, OpenShift, Jelastic, Microsoft Azure, и т д
![Page 178: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/178.jpg)
Логирование в Docker-е
52
![Page 179: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/179.jpg)
Логирование в Docker-еМонтируйте папку с логами через VOLUME, -v вне контейнера на хосте
52
![Page 180: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/180.jpg)
API development
53
![Page 181: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/181.jpg)
API development• Не используйте JUL/JDK просто потому что он уже есть в Java!
53
![Page 182: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/182.jpg)
API development• Не используйте JUL/JDK просто потому что он уже есть в Java!
• Не используйте JUL/JDK просто потому что он уже есть в Java!!
53
![Page 183: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/183.jpg)
API development• Не используйте JUL/JDK просто потому что он уже есть в Java!
• Не используйте JUL/JDK просто потому что он уже есть в Java!!
• Используйте связку SLF4J+“рабочая лошадка”, например, logback
53
![Page 184: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/184.jpg)
API development• Не используйте JUL/JDK просто потому что он уже есть в Java!
• Не используйте JUL/JDK просто потому что он уже есть в Java!!
• Используйте связку SLF4J+“рабочая лошадка”, например, logback
• Подумайте, а нужна ли библиотека “рабочей лошадки” как транзитивная зависимость вашим клиентам?
53
![Page 185: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/185.jpg)
API development• Не используйте JUL/JDK просто потому что он уже есть в Java!
• Не используйте JUL/JDK просто потому что он уже есть в Java!!
• Используйте связку SLF4J+“рабочая лошадка”, например, logback
• Подумайте, а нужна ли библиотека “рабочей лошадки” как транзитивная зависимость вашим клиентам?
• Паттерн “волшебная системная пропертя” а-ля verbose
53
![Page 186: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/186.jpg)
Сколько проблем в коде?private static final Logger log = LoggerFactory.getLogger(SomeClass.class); (1)
…
void withdraw(String login, Long amount) { (2)
if (log.isDebugEnabled()) { (3)
log.debug(“starting withdrawing”); (4)
}
log.info(“login ”+login+“,amount ”+amount); (5)
}
54
![Page 187: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/187.jpg)
Сколько проблем в коде?private static final Logger LOG = LoggerFactory.getLogger(SomeClass.class); (1)
…
void withdraw(String login, Long amount) { (2)
if (log.isDebugEnabled()) { (3)
LOG.debug(“starting withdrawing”); (4)
}
LOG.info(“login {},amount {}”,login,amount);(5)
}
55
![Page 188: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/188.jpg)
Безопасность в логировании: уязвимости
56
![Page 189: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/189.jpg)
Безопасность в логировании: уязвимости
• Логирование персональных данных, а также ценной коммерческой информации
56
![Page 190: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/190.jpg)
Безопасность в логировании: уязвимости
• Логирование персональных данных, а также ценной коммерческой информации
• Log Injection (OWASP): перевод строки, другие атаки …
56
![Page 191: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/191.jpg)
Безопасность в логировании: уязвимости
• Логирование персональных данных, а также ценной коммерческой информации
• Log Injection (OWASP): перевод строки, другие атаки …
• Javascript Injection
56
![Page 192: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/192.jpg)
Безопасность в логировании: уязвимости
• Логирование персональных данных, а также ценной коммерческой информации
• Log Injection (OWASP): перевод строки, другие атаки …
• Javascript Injection
• Атаки на мониторинговые тулы, базы данных и т.д.
56
![Page 193: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/193.jpg)
Безопасность в логировании: уязвимости
• Логирование персональных данных, а также ценной коммерческой информации
• Log Injection (OWASP): перевод строки, другие атаки …
• Javascript Injection
• Атаки на мониторинговые тулы, базы данных и т.д.
• Открытое логирование паролей, логинов, урлов и хостов
56
![Page 194: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/194.jpg)
57
Безопасность в логировании: решения
![Page 195: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/195.jpg)
• veracode.com рекомендует логировать только константные выражения из предопределенного пула строк
57
Безопасность в логировании: решения
![Page 196: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/196.jpg)
• veracode.com рекомендует логировать только константные выражения из предопределенного пула строк
• https://github.com/javabeanz/owasp-security-logging (экранирование, шифрация, маскирование, фильтрация, аудит)
57
Безопасность в логировании: решения
![Page 197: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/197.jpg)
• veracode.com рекомендует логировать только константные выражения из предопределенного пула строк
• https://github.com/javabeanz/owasp-security-logging (экранирование, шифрация, маскирование, фильтрация, аудит)
• Фильтры и конвертеры в logback
57
Безопасность в логировании: решения
![Page 198: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/198.jpg)
58
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 199: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/199.jpg)
59
Appender
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 200: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/200.jpg)
60
AppenderEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 201: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/201.jpg)
61
Appender FilterEvent
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 202: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/202.jpg)
62
Appender FilterEvent
DenyNeutralAccept
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 203: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/203.jpg)
63
Appender FilterEvent Console
FileSocket
DenyNeutralAccept
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 204: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/204.jpg)
64
Appender ConverterEvent escape
mask encrypt
converttransform
Универсальная Программная Архитектурная Диаграмма (УПАД) by @tedneward
![Page 205: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/205.jpg)
Что Вам сделать после доклада?
65
![Page 206: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/206.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
65
![Page 207: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/207.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
• Если Вы пишете API, подумать о класспасе ваших клиентов
65
![Page 208: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/208.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
• Если Вы пишете API, подумать о класспасе ваших клиентов
• Досконально изучить вашу связку адаптер+”рабочая лошадка”
65
![Page 209: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/209.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
• Если Вы пишете API, подумать о класспасе ваших клиентов
• Досконально изучить вашу связку адаптер+”рабочая лошадка”
• Придумать как удобно доставать и просматривать логи с продакшена
65
![Page 210: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/210.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
• Если Вы пишете API, подумать о класспасе ваших клиентов
• Досконально изучить вашу связку адаптер+”рабочая лошадка”
• Придумать как удобно доставать и просматривать логи с продакшена
• Принять во внимание текущее и возможное будущее окружение: один сервер, кластер, виртуалка, облако, Docker
65
![Page 211: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/211.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
• Если Вы пишете API, подумать о класспасе ваших клиентов
• Досконально изучить вашу связку адаптер+”рабочая лошадка”
• Придумать как удобно доставать и просматривать логи с продакшена
• Принять во внимание текущее и возможное будущее окружение: один сервер, кластер, виртуалка, облако, Docker
• Проверить Ваш код на уязвимости по безопасности, докрутить экранирование строк, маскирование или криптование подозрительных аргументов
65
![Page 212: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/212.jpg)
Что Вам сделать после доклада?• Очистить Ваш класспас от месива библиотек логирования, подтягивающихся транзитивно и бесконтрольно Вашими maven, gradle, sbt и ivy с ними
• Если Вы пишете API, подумать о класспасе ваших клиентов
• Досконально изучить вашу связку адаптер+”рабочая лошадка”
• Придумать как удобно доставать и просматривать логи с продакшена
• Принять во внимание текущее и возможное будущее окружение: один сервер, кластер, виртуалка, облако, Docker
• Проверить Ваш код на уязвимости по безопасности, докрутить экранирование строк, маскирование или криптование подозрительных аргументов
• Ежедневно использовать Универсальную Программную Архитектурную Диаграмму (УПАД) Теда Ньюворда, чтобы прослыть крутым архитектором
65
![Page 213: Владимир Красильщик, Luxoft, Санкт Петербургpublic.jugru.org/jpoint/2016/msk/day_1/track_1/java... · 2016-07-05 · 1 Владимир Красильщик,](https://reader035.vdocuments.site/reader035/viewer/2022070215/5ec6c6342e26f1010c6d8dd2/html5/thumbnails/213.jpg)
66
Спасибо!
Владимир Красильщик, Luxoft, Санкт-Петербург[email protected]
https://ru.linkedin.com/in/vladimirkrasilschikhttp://drozd4j.blogspot.ru
66
Москва, 2016