packets.go:123: closing bad idle connection: EOF
, которые вываливаются в обход логруса и его форматтера.
Пробовал через mysql.SetLogger, но такие сообщения просто пропадают. В общем, я уже запутался и замучался :/
https://github.com/simukti/sqldb-logger
Я видел. Но не понял, зачем он мне? У меня есть логрус. С ним всё хорошо. Надо только подружить его с драйвером. А это какой-то другой логгер с адаптером под драйвер
Это прослойка, которая позволяет логировать все операции. И там есть адаптеры под разные логеры. И под тот же самый логрус.
Мне не надо все операции логировать. Задача гораздо уже: когда, например, отваливается коннект к бд, в драйвере кроме возврата ошибок есть принт отдельный своим логгером. Вот его и надо обработать. SetLogger метод позволяет переопределить логгер драйвера, но у меня не получается.
if err != nil { errLog.Print("closing bad idle connection: ", err) mc.Close() return driver.ErrBadConn }
Ну судя по коду в драйвере, переопределяет глобальную переменную. И ее и использует везде потом. Так что SetLogger должно работать.
Я использую логрус глобально(то есть, нигде его не порождая) и переопределяю при старте только форматтер. Поэтому у меня нет какого-то своего экземпляра. В итоге я делаю что-то вроде lg:= *logrus.Logger = и потом mysql.SetLogger(&lg) Только в этом варианте мне удалось скомпилировать без ошибок. Но сообщений этого принта нет. И я не уверен, что работает это верно. Есть подозрение, что тупо подавляет все такие принты, что не есть хорошо.
StandardLogger()
Но вообще, если вы будете логировать ошибки базы еще, то у вас задвоятся логи.
Это ж не ошибки базы. Это некоторое количество расставленных принтов(я выше показал пример из драйвера), которые расставлены на каких-то критических участках. Они нужны в принципе только для того, чтобы в случае чего проще было загуглить проблему. Насколько я понял StandartLogger возвращает указатель на тот экземпляр, с которым я по факту работаю. Попробую завтра.
Там в коде на эти принты и возвраты оштбок идут.
Ошибки нормально прилетают.
будет очень весело, если ты мьютекс скопировал
А при чем тут мьютекс и скопировал? Человек получает указатель и отправляет внутрь указатель на указатель))) Где здесь копирование?
log := *logrus.Logger
Обсуждают сегодня