Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Как скрыть варнинг об отсутствии SLF4J логгера / 25 сообщений из 54, страница 1 из 3
09.08.2020, 01:57
    #39987870
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Использую Ktor Kotlin Framework и он где-то (вероятно в Jetty) имеет slf4j зависимость и пишет предупреждение

Код: java
1.
2.
3.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.


Как это можно скрыть (я использую Мавен)? В идеале вообще не добавляя SLF4J в зависимости, поскольку он мне не нужен, я использую другую систему логов.
...
Рейтинг: 0 / 0
09.08.2020, 02:44
    #39987875
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Таки нашел как убрать мусор из логов, надо добавить в пом.хмл
Код: java
1.
2.
3.
4.
5.
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-nop</artifactId>
      <version>1.7.30</version>
    </dependency>
...
Рейтинг: 0 / 0
09.08.2020, 18:55
    #39987966
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Смыс логгирования в том чтоб уведомлять о важных событиях в системе. Если ты подключаешь
slf4j-nop аппендер - ты подключаешь заглушку. Которая сливает все события в сливную яму.
Примерно как и виртуальный файл /dev/null в Unix. Тоесть все события что подсистема slf4j
залоггирует - она сольёт в канализацию. Возможно было-бы полезно подключить нормальный
аппендер к консоли (STDOUT) от Log4j2 или Backlog которые умеют стыковаться мостом с slf4j
и хотя-бы посмотреть что там вообще сообщается. Может какие-то месседжи от библиотек.
Они могут быть важны.
...
Рейтинг: 0 / 0
10.08.2020, 01:19
    #39988011
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
не лучшее решение, лучше вот так:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
...
<repositories>
    <repository>
        <id>jcenter</id>
        <name>jcenter</name>
        <url>https://jcenter.bintray.com</url>
    </repository>
</repositories>
...
<dependency>
    <groupId>io.i-t</groupId>
    <artifactId>bobbin</artifactId>
    <version>4.1.0</version>
</dependency>
...



кстати вот классная статья по этому логгеру:
https://i-t.io/website/#/Blog/LoggingSpringBoot
...
Рейтинг: 0 / 0
10.08.2020, 08:46
    #39988043
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
dakeiras
кстати вот классная статья по этому логгеру:
https://i-t.io/website/#/Blog/LoggingSpringBoot


Это тот логер, где конкаранси проблемы нашли просто ткнуть пальцем? Ну ну...
...
Рейтинг: 0 / 0
10.08.2020, 08:46
    #39988044
Alexey Tomin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Alexey Tomin
dakeiras
кстати вот классная статья по этому логгеру:
https://i-t.io/website/#/Blog/LoggingSpringBoot


Это тот логер, где конкаранси проблемы нашли просто ткнув пальцем? Ну ну...
...
Рейтинг: 0 / 0
10.08.2020, 08:51
    #39988047
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Да это тот медленный логгер, автор которого так и не сделал бенчмарка.

И так и не создал внятной документации.
...
Рейтинг: 0 / 0
10.08.2020, 10:10
    #39988068
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Alexey Tomin
dakeiras
кстати вот классная статья по этому логгеру:
https://i-t.io/website/#/Blog/LoggingSpringBoot


Это тот логер, где конкаранси проблемы нашли просто ткнуть пальцем? Ну ну...

это тот логгер в котором многопоточность изначально лучше спроектирована чем в остальных логгерах, т.к. он проектировался специально для этого.
А найденное использование simpledateformat можно было даже оставить, оно не вызывало проблем в этом случае.
...
Рейтинг: 0 / 0
10.08.2020, 11:35
    #39988094
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
авторСмыс логгирования в том чтоб уведомлять о важных событиях в системе. Если ты подключаешь
slf4j-nop аппендер - ты подключаешь заглушку. Которая сливает все события в сливную яму.
Примерно как и виртуальный файл /dev/null в Unix. Тоесть все события что подсистема slf4j
залоггирует - она сольёт в канализацию. Возможно было-бы полезно подключить нормальный
аппендер к консоли (STDOUT) от Log4j2 или Backlog которые умеют стыковаться мостом с slf4j
и хотя-бы посмотреть что там вообще сообщается. Может какие-то месседжи от библиотек.
Они могут быть важны.

Я использую подход во многом похожий на https://12factor.net и структурные логи
Стандартные логи и конфиги жавы я не использую.
Про пропуск важных событий - у меня стоят свои перехватчики try/catch
...
Рейтинг: 0 / 0
10.08.2020, 11:37
    #39988096
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Собственно мне потому и понравился Котлин - он дает возможность выкинуть все что есть в жаве кроме ядра и центральных конструкций языка.

И использовать его так словно это руби.
...
Рейтинг: 0 / 0
10.08.2020, 12:40
    #39988132
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
private,
Пора тебе подветку форума заводить про Kotlin.
...
Рейтинг: 0 / 0
10.08.2020, 13:50
    #39988175
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
private
авторСмыс логгирования в том чтоб уведомлять о важных событиях в системе. Если ты подключаешь
slf4j-nop аппендер - ты подключаешь заглушку. Которая сливает все события в сливную яму.
Примерно как и виртуальный файл /dev/null в Unix. Тоесть все события что подсистема slf4j
залоггирует - она сольёт в канализацию. Возможно было-бы полезно подключить нормальный
аппендер к консоли (STDOUT) от Log4j2 или Backlog которые умеют стыковаться мостом с slf4j
и хотя-бы посмотреть что там вообще сообщается. Может какие-то месседжи от библиотек.
Они могут быть важны.


Я использую подход во многом похожий на https://12factor.net и структурные логи
Стандартные логи и конфиги жавы я не использую.
Про пропуск важных событий - у меня стоят свои перехватчики try/catch

Вы как раз указываете на невозможность использования slf4j-nop в Вашем случае.

Кстати очень забавно - 12 factor app говорит что всякие rolling file appender и size policy в 21м веке не нужны.
Это в первую очередь адресуется людям свято верящим что logback хороший логгер.
...
Рейтинг: 0 / 0
10.08.2020, 14:07
    #39988187
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
private
авторСмыс логгирования в том чтоб уведомлять о важных событиях в системе. Если ты подключаешь
slf4j-nop аппендер - ты подключаешь заглушку. Которая сливает все события в сливную яму.
Примерно как и виртуальный файл /dev/null в Unix. Тоесть все события что подсистема slf4j
залоггирует - она сольёт в канализацию. Возможно было-бы полезно подключить нормальный
аппендер к консоли (STDOUT) от Log4j2 или Backlog которые умеют стыковаться мостом с slf4j
и хотя-бы посмотреть что там вообще сообщается. Может какие-то месседжи от библиотек.
Они могут быть важны.


Я использую подход во многом похожий на https://12factor.net и структурные логи
Стандартные логи и конфиги жавы я не использую.
Про пропуск важных событий - у меня стоят свои перехватчики try/catch
А что внутри этих "перехватчиков" ?
...
Рейтинг: 0 / 0
10.08.2020, 14:25
    #39988207
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Просто обычный перехватчик с логами и сообщением об ошибке, Например:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
...
    // Handling request
    try {
      log.info(if(is_privacy_enabled) "[hidden]" else req.toString())
      val any_res = handler(req)
      val res = if (any_res is Response) any_res else Response(any_res)
      format_response(req.format, res, sres)
    } catch (e: Exception) {
      try {
        val message: String = e.message ?: "Unknown error"
        log.error(if(is_privacy_enabled) "[hidden]" else req.toString(), if(is_privacy_enabled) null else e)
        format_error(default_format, message, sres)
      } catch (e: Exception) {
        log.error("can't reply with error", if(is_privacy_enabled) null else e)
        "Can't reply with handler error"
      }
    }
...
...
Рейтинг: 0 / 0
10.08.2020, 14:35
    #39988216
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Точнее, вот

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
...
try {
  log.info(req.toString())
  val res = handler(req)
  return format_response(res)
} catch (e: Exception) {
  try {
    log.error(req.toString(), e)
    return format_error(e.message)
  } catch (e: Exception) {
    log.error("can't reply with error", e)
    return "Can't reply with handler error"
  }
}
...
...
Рейтинг: 0 / 0
10.08.2020, 14:37
    #39988219
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Обертка для обработчика ХТТП запроса для веб-сервера spark
...
Рейтинг: 0 / 0
10.08.2020, 16:02
    #39988268
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
private,
Сколько на день написания кода у вас try конструкций?
Не надоедает по 12-15 строк в каждой писать?
...
Рейтинг: 0 / 0
10.08.2020, 16:45
    #39988289
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Не знаю джентльмены. Чем-то мне такой подход не нравится. Эта этажерка из try....

Некрасиво как-то. А в части практической механики например... там где некрасиво - там
крыло у самолета обламывается. Это метафора конечно. Но за метафорой может быть
повод обсудить.
...
Рейтинг: 0 / 0
10.08.2020, 21:32
    #39988413
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Вот как я разобрался с логированием раз и навсегда (Groovy):

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    @PostMapping(value = "/restricted/user/{phone}/payment/{plaidAccountId}")
    @ResponseBody
    @CompileDynamic
    @CrossOrigin
    Payment createPayment(
            @RequestBody Payment payment,
            @PathVariable("phone") String phone,
            @PathVariable("plaidAccountId") String plaidAccountId
    ) {
        return paymentService.createPayment(payment, phone, plaidAccountId)
    }



Аннотация @BlackBox (на уровне класса) автоматически преобразует это на этапе компиляции в:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    @PostMapping(value = "/restricted/user/{phone}/payment/{plaidAccountId}")
    @ResponseBody
    @CompileDynamic
    @CrossOrigin
    Payment createPayment(
            @RequestBody Payment payment,
            @PathVariable("phone") String phone,
            @PathVariable("plaidAccountId") String plaidAccountId
    ) {
        java.lang.Object resultPlaceHolder
        blackBoxRuntime.methodBegin(new io.infinite.blackbox.MethodMetaData('io.infinite.orbit.controllers.PaymentController', 'createPayment', 22, 32, 5, 6), ['payment': payment, 'phone': phone, 'plaidAccountId': plaidAccountId])
        try {
            return resultPlaceHolder = paymentService.createPayment(payment, phone, plaidAccountId)
        }
        catch (java.lang.Exception automaticException) {
            blackBoxRuntime.methodException(new io.infinite.blackbox.MethodMetaData('io.infinite.orbit.controllers.PaymentController', 'createPayment', 22, 32, 5, 6), ['payment': payment, 'phone': phone, 'plaidAccountId': plaidAccountId], automaticException)
            throw automaticException
        }
        finally {
            blackBoxRuntime.methodResult(new io.infinite.blackbox.MethodMetaData('io.infinite.orbit.controllers.PaymentController', 'createPayment', 22, 32, 5, 6), resultPlaceHolder)
            blackBoxRuntime.methodEnd(new io.infinite.blackbox.MethodMetaData('io.infinite.orbit.controllers.PaymentController', 'createPayment', 22, 32, 5, 6))
        }
    }



С этих пор я логирование не пишу. Вообще. И при этом логи имеют вообще всю возможную информацию.
...
Рейтинг: 0 / 0
10.08.2020, 22:25
    #39988427
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
dakeiras,
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
...
Рейтинг: 0 / 0
10.08.2020, 22:38
    #39988430
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
dakeiras,

Где тут элемент твоей гордости? Букв много. Неймспейсы какие-то. Зачем это все?

Да любой классический логгер, выглядит лаконично в use case.
...
Рейтинг: 0 / 0
10.08.2020, 23:21
    #39988443
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
PetroNotC Sharp
dakeiras,
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.

ну в общем да. Крайняя степень простоты - пустота.
В данном случае кода логирования не видно.
А он есть:)
...
Рейтинг: 0 / 0
10.08.2020, 23:26
    #39988444
dakeiras
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
mayton
dakeiras,

Где тут элемент твоей гордости? Букв много. Неймспейсы какие-то. Зачем это все?

Да любой классический логгер, выглядит лаконично в use case.

это не логгер, а аннотация, добавляющая код логирования на этапе компиляции.

В частности добавленный код логирует аргументы и возвращаемый объект.

Неймспейсы это имя класса в котором объявлен метод из примера.

Логгер тут поддерживается любой (Slf4j).
...
Рейтинг: 0 / 0
11.08.2020, 07:25
    #39988482
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
авторСколько на день написания кода у вас try конструкций?
Не надоедает по 12-15 строк в каждой писать?

Ни одной, это-же единый перехватчик для всех запросов. Я вообще редко явно не использую try/catch

авторНе знаю джентльмены. Чем-то мне такой подход не нравится. Эта этажерка из try....

Некрасиво как-то. А в части практической механики например... там где некрасиво - там
крыло у самолета обламывается. Это метафора конечно. Но за метафорой может быть
повод обсудить.

это один единственный кусочек кода с перехватчиком.
Сама бизнес-логика выглядит как код ниже, и все ошибки в ней будут отловлены и записан этим перехватчиком.

Код: java
1.
server.get("/say_hello") { "Hi" }
...
Рейтинг: 0 / 0
11.08.2020, 07:31
    #39988484
private
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как скрыть варнинг об отсутствии SLF4J логгера
Ну и да в логах будет записао что

Ну и да в логах будет записано компактное сообщение (вместо жавовской лапши)

Код: java
1.
info HTTP /say_hello



А в базу логов уже пойдет (в моем примере перхватчика этого не видно, я привел упрощенную версию) уже подробное событие типа

Код: java
1.
2.
3.
4.
{ 
  time: "2020-...", component: "HTTP", level: "info", 
  method: "get", path: "/say_hello", params: {}, finished_in_ms: 120,
}
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как скрыть варнинг об отсутствии SLF4J логгера / 25 сообщений из 54, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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