170 похожих чатов

Народ, а как перехватывать logrusом сообщения логгера драйвера go-sql-driver? Например,

packets.go:123: closing bad idle connection: EOF
, которые вываливаются в обход логруса и его форматтера.

Пробовал через mysql.SetLogger, но такие сообщения просто пропадают. В общем, я уже запутался и замучался :/

15 ответов

25 просмотров

https://github.com/simukti/sqldb-logger

Марк Егоров- Автор вопроса
Zver
https://github.com/simukti/sqldb-logger

Я видел. Но не понял, зачем он мне? У меня есть логрус. С ним всё хорошо. Надо только подружить его с драйвером. А это какой-то другой логгер с адаптером под драйвер

Марк Егоров
Я видел. Но не понял, зачем он мне? У меня есть л...

Это прослойка, которая позволяет логировать все операции. И там есть адаптеры под разные логеры. И под тот же самый логрус.

Марк Егоров- Автор вопроса
Zver
Это прослойка, которая позволяет логировать все оп...

Мне не надо все операции логировать. Задача гораздо уже: когда, например, отваливается коннект к бд, в драйвере кроме возврата ошибок есть принт отдельный своим логгером. Вот его и надо обработать. SetLogger метод позволяет переопределить логгер драйвера, но у меня не получается.

Марк Егоров- Автор вопроса
Zver
Это прослойка, которая позволяет логировать все оп...

if err != nil { errLog.Print("closing bad idle connection: ", err) mc.Close() return driver.ErrBadConn }

Марк Егоров
Мне не надо все операции логировать. Задача горазд...

Ну судя по коду в драйвере, переопределяет глобальную переменную. И ее и использует везде потом. Так что SetLogger должно работать.

Марк Егоров- Автор вопроса
Zver
Ну судя по коду в драйвере, переопределяет глобаль...

Я использую логрус глобально(то есть, нигде его не порождая) и переопределяю при старте только форматтер. Поэтому у меня нет какого-то своего экземпляра. В итоге я делаю что-то вроде lg:= *logrus.Logger = и потом mysql.SetLogger(&lg) Только в этом варианте мне удалось скомпилировать без ошибок. Но сообщений этого принта нет. И я не уверен, что работает это верно. Есть подозрение, что тупо подавляет все такие принты, что не есть хорошо.

Марк Егоров
Я использую логрус глобально(то есть, нигде его не...

Но вообще, если вы будете логировать ошибки базы еще, то у вас задвоятся логи.

Марк Егоров- Автор вопроса
Zver
Но вообще, если вы будете логировать ошибки базы е...

Это ж не ошибки базы. Это некоторое количество расставленных принтов(я выше показал пример из драйвера), которые расставлены на каких-то критических участках. Они нужны в принципе только для того, чтобы в случае чего проще было загуглить проблему. Насколько я понял StandartLogger возвращает указатель на тот экземпляр, с которым я по факту работаю. Попробую завтра.

Марк Егоров
Это ж не ошибки базы. Это некоторое количество рас...

Там в коде на эти принты и возвраты оштбок идут.

Марк Егоров- Автор вопроса
Марк Егоров
Я использую логрус глобально(то есть, нигде его не...

будет очень весело, если ты мьютекс скопировал

медленно
будет очень весело, если ты мьютекс скопировал

А при чем тут мьютекс и скопировал? Человек получает указатель и отправляет внутрь указатель на указатель))) Где здесь копирование?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта