您可以使用logging.basicConfig通过日志记录定义可用的默认界面,如下所示:
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-8s [%(process)d] %(message)s',
)
当您在应用程序中执行以下任何操作时,现在将使用此定义:
import logging
logging.error(...)
虽然__name__不可用,但通过默认的LogRecord attributes可以使用等效(和其他选项),可用于错误字符串格式 – 包括模块,文件名和路径名。以下是一个双脚本演示:
scripta.py
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(module)s %(name)s.%(funcName)s +%(lineno)s: %(levelname)-8s [%(process)d] %(message)s',
)
from scriptb import my_view
my_view()
scriptb.py
import logging
def my_view():
# Log an error message
logging.error('Something went wrong!')
日志记录定义在scripta.py中定义,并添加了模块参数。在scriptb.py中,我们只需要导入日志记录即可访问此定义的默认值。运行scripta.py时会生成以下输出:
2016-01-14 13:22:24,640 scriptb root.my_view +9: ERROR [14144] Something went wrong!
其中显示了发生错误日志记录的模块(scriptb)。
根据this answer,您可以通过关闭Django处理和设置根处理程序,从Django继续使用任何每模块配置的日志记录,如下所示:
# settings.py - django config
LOGGING_CONFIG = None # disables Django handling of logging
LOGGING = {...} # your standard Django logging configuration
import logging.config
logging.config.dictConfig(LOGGING)