Указатель регистратора Logrus на определенный уровень журнала

Я использую библиотеку MQTT paho, у которой есть собственный интерфейс регистратора, реализованный logrus logger, библиотека paho имеет несколько уровней: ERROR, CRITICAL и так далее. Я пытался сделать что-то вроде этого:

    MQTT.ERROR = app.Log.WithField("level","ERROR")
    MQTT.CRITICAL = app.Log.WithField("level","CRITICAL")

но это не регистрируется, потому что у вас не может быть поля с именем level, и если вы не добавите уровень, он всегда переходит на информационный уровень, потому что entry.Print - это реализация, которая делает log.Info внутри, есть ли способ передать указатель в logrus logger с соответствующим уровнем лога, не создавая вокруг него новую оболочку.

Я знаю, что это можно сделать с помощью нового пакета, который будет реализовывать mqtt.Logger с функциями, внутри которых будут вызовы log.Error. Но я чувствую, что должен быть немного лучший способ сделать это.


person Amir Hasanbašić    schedule 19.05.2021    source источник
comment
Это похоже на проблему XY. Какова конечная цель, которую вы пытаетесь достичь?   -  person Flimzy    schedule 19.05.2021


Ответы (1)


Я знаю, что это можно сделать с помощью нового пакета, который будет реализовывать mqtt.Logger с функциями, внутри которых будут вызовы log.Error. Но я чувствую, что должен быть немного лучший способ сделать это.

Это не обязательно должно быть в новом пакете, вы можете просто определить структуру и реализовать ее mqtt.Logger в том же пакете.

Боюсь, нет лучшего способа сделать это

person aureliar    schedule 19.05.2021
comment
Да конечно его можно определить, но я думал что может есть способ сделать это с логрусом, может быть я ткну в логрус и попробую сделать PR, кажется полезным иметь способ сослаться на логгер с определенным уровень. Я пытался экспериментировать с крючками, но это была совершенно неверная идея. - person Amir Hasanbašić; 19.05.2021