python - 如何导入我的日志记录设置而不是将其硬编码到脚本中?
问题描述
我是否可以将我的日志记录设置导入脚本,而不必将其硬编码到每个单独的脚本中?我主要想减少冗余。
我现在添加到每个脚本的代码是这样的:
import logging
import sys
# enable logging
log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
formatter = logging.Formatter(fmt="%(asctime)s - <%(filename)s:%(funcName)s> %(levelname)s: %(message)s",
datefmt="%Y-%m-%d - %H:%M:%S")
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
fh = logging.FileHandler("updates.log", "a")
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
log.addHandler(ch)
log.addHandler(fh)
这让我只能说log.info('this thing happened!')
解决方案
您可以将日志记录配置封装在一个函数中,并在不同文件的开头调用它。
在文件中logging_utils.py
:
import logging
import sys
def log_setup():
log = logging.getLogger(__name__)
log.setLevel(logging.DEBUG)
formatter = logging.Formatter(fmt="%(asctime)s - <%(filename)s:%(funcName)s> %(levelname)s: %(message)s", datefmt="%Y-%m-%d - %H:%M:%S")
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
fh = logging.FileHandler("updates.log", "a")
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter)
log.addHandler(ch)
log.addHandler(fh)
return log
在main.py
:
from logging_utils import setup_log
log = setup_log()
log.info('this log will work as planned!')
推荐阅读
- amazon-web-services - Creating TWO way trusts between two AWS managed Active Directory
- android - 使用 gradle 模块作为具有特定风格的依赖项
- php - 图像移动到文件夹但不保存数据库中的行
- css - 在本机反应中将图像放在视图上
- python - 如何防止pytest在测试期间打印局部变量
- go - 如何使用 go 获取切片中的单个项目计数?
- windows - wmware 工作站不适用于 windows 10 pro 1903
- filter - 为什么过滤器不适用于字符串列表
- json - JSON解组中缺失字段和空字段之间的区别
- python - Django populate() 不是可重入的,不能被重新加载