如何为模块中的每个文件设置不同级别的日志记录?
How to set diferent levels of logging for each file in module?
如何选择模块的登录级别?
我有一个包含各种文件的应用程序,
我努力了解日志记录模块,并删除 print()
我的日志记录目标是灵活地从代码的不同部分(模块)切换日志记录级别
我仅从主入口点函数执行此操作:
这是我的:
APP/PartA/Script1.py
APP/PartA/Script2.py
APP/Other/Tools.py
APP/main.py
第一个模块:
#/PartA/Script1.py
import logging
from PartA.Script2 import *
logger = logging.getLogger(__name__)
# Logger Always on debug level:
logger.setLevel(logging.DEBUG)
handler1 = logging.StreamHandler()
handler1.setFormatter(logging.Formatter('\n%(levelname)s %(name)s'))
logger.addHandler(handler1)
def add_ten(n)
ten_added = add_five(n) + 5
return ten_added
第二个模块:
#/PartA/Script2.py
import logging
logger = logging.getLogger(__name__)
# Logger Always on debug level:
logger.setLevel(logging.DEBUG)
handler2 = logging.StreamHandler()
handler2.setFormatter(logging.Formatter('\n%(levelname)s %(name)s %(funcName)s %(lineno)s \n%(message)s'))
logger.addHandler(handler2)
def add_five(n):
return n + 5
主要入口点:
#main.py
import logging
from PartA.Script1 import *
from PartA.Script2 import *
logger = logging.getLogger(__name__)
# Logger is always on debug mode..
logger.setLevel(logging.DEBUG)
# Mainhandler:
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
# Here i control the logs levels from the other modules:
handler2.setLevel(logging.DEBUG)
handler1.setLevel(logging.ERROR)
那行得通,因为我只需要更改主函数中的处理程序设置级别,但我不认为它非常 pythonic,必须将所有记录器设置为 DEBUG 级别似乎总是很奇怪,
并且对任何新的 .py 文件执行非常重复的代码..
python 中的最佳做法是不要在模块内配置任何日志记录 handlers/formatters,只需使用 NullHandler。处理程序的配置是在应用程序内部使用模块完成的。
因此模块内部的以下内容应该足够了。
import logging
logger = logging.getLogger(__name__)
如何选择模块的登录级别?
我有一个包含各种文件的应用程序, 我努力了解日志记录模块,并删除 print() 我的日志记录目标是灵活地从代码的不同部分(模块)切换日志记录级别 我仅从主入口点函数执行此操作:
这是我的:
APP/PartA/Script1.py
APP/PartA/Script2.py
APP/Other/Tools.py
APP/main.py
第一个模块:
#/PartA/Script1.py
import logging
from PartA.Script2 import *
logger = logging.getLogger(__name__)
# Logger Always on debug level:
logger.setLevel(logging.DEBUG)
handler1 = logging.StreamHandler()
handler1.setFormatter(logging.Formatter('\n%(levelname)s %(name)s'))
logger.addHandler(handler1)
def add_ten(n)
ten_added = add_five(n) + 5
return ten_added
第二个模块:
#/PartA/Script2.py
import logging
logger = logging.getLogger(__name__)
# Logger Always on debug level:
logger.setLevel(logging.DEBUG)
handler2 = logging.StreamHandler()
handler2.setFormatter(logging.Formatter('\n%(levelname)s %(name)s %(funcName)s %(lineno)s \n%(message)s'))
logger.addHandler(handler2)
def add_five(n):
return n + 5
主要入口点:
#main.py
import logging
from PartA.Script1 import *
from PartA.Script2 import *
logger = logging.getLogger(__name__)
# Logger is always on debug mode..
logger.setLevel(logging.DEBUG)
# Mainhandler:
handler = logging.StreamHandler()
handler.setLevel(logging.INFO)
# Here i control the logs levels from the other modules:
handler2.setLevel(logging.DEBUG)
handler1.setLevel(logging.ERROR)
那行得通,因为我只需要更改主函数中的处理程序设置级别,但我不认为它非常 pythonic,必须将所有记录器设置为 DEBUG 级别似乎总是很奇怪, 并且对任何新的 .py 文件执行非常重复的代码..
python 中的最佳做法是不要在模块内配置任何日志记录 handlers/formatters,只需使用 NullHandler。处理程序的配置是在应用程序内部使用模块完成的。
因此模块内部的以下内容应该足够了。
import logging
logger = logging.getLogger(__name__)