У меня есть код Python, в который мне нужно добавить логирование.
Я всегда отдавал предпочтение красивым, большим макросам на языке C, таким как «DEBUG ()», «ERROR ()» и т. Д. Для журналирования. Я чувствую, что это упрощает чтение кода (без объектов), когда точки трассировки визуально отличаются от реального кода.
Я также хотел бы иметь возможность устанавливать уровни ведения журнала на уровне модуля.
Как я могу создать модуль под названием «журнал», который может это делать (используя модуль журналирования библиотеки Python std)?
E.g.:
Файл: main.py
# This imports LOG_MODULE_NAME, DEBUG, WARN, etc
from log import *
import my_module
LOG_MODULE_NAME("main")
log.set_level("main", log.LVL_DEBUG)
log.set_level("my_module", log.LVL_WARN)
if __name__ == "__main__":
foo = my_module.myFunc(2)
DEBUG("Exiting main.py")
Файл: my_module.py
from log import *
LOG_MODULE_NAME("my_module")
def myFunc(x):
DEBUG("Entering function")
if x != 1:
WARN("I thought it would be 1")
DEBUG("Exiting function")
return x+1
Я ожидал, что результат будет выглядеть примерно так:
[WARN:my_module - my_module.py:9] I thought it would be 1
[DEBUG:main - main.py:11] Exiting main.py
Logger
. - person 2rs2ts   schedule 18.07.2013import
дает вам доступ к коду внутри модуля. Очевидно, это не означает, что пространства имен будут конфликтовать. В любом случае вам не нужно и не нужно делать модуль, который будет обертыватьlogging
. - person 2rs2ts   schedule 18.07.2013