python - Python日志记录将所有级别的日志写入文件
问题描述
import logging
def set_logging():
logging.basicConfig(
format='%(asctime)s %(levelname)s %(message)s',
level=logging.INFO,
datefmt='%m/%d/%Y %I:%M:%S %p'
)
logger = logging.getLogger('simple_example')
fl = logging.FileHandler("myapp.log")
fl.setLevel(logging.INFO)
logger.addHandler(fl)
return logger
if __name__ == "__main__":
logger = set_logging()
logger.info('infoooo')
logger.error('erorrrr')
Output:
/home/admin# python logging.py
09/08/2019 02:40:36 PM INFO infoooo
09/08/2019 02:40:36 PM ERROR erorrrr
/home/admin# cat myapp.log
infoooo
erorrrr
如果我在上面的代码中注释掉 logging.basicConfig() 行,在控制台中看不到输出,并且只有“errrrr”消息被写入文件。我可以在上面的代码中更改什么以将所有级别的日志写入文件而不向控制台写入任何内容?
解决方案
您可以使用logger.propagate = False
禁用控制台日志记录。
import logging
def set_logging():
logging.basicConfig(
format='%(asctime)s %(levelname)s %(message)s',
level=logging.INFO,
datefmt='%m/%d/%Y %I:%M:%S %p'
)
logger = logging.getLogger('simple_example')
logger.propagate = False
fl = logging.FileHandler("myapp.log")
fl.setLevel(logging.INFO)
logger.addHandler(fl)
return logger
if __name__ == "__main__":
logger = set_logging()
logger.info('infoooo')
logger.error('erorrrr')
推荐阅读
- r - 使用 Roxygen2 记录 R 包时出错
- openstack - Mirantis Openstack Fuel 无法为节点提供 VIRT 角色
- azure - 无法使用 powershell cmdlet 将 Azure Scaleset 连接到自动化 DSC
- php - 将数组计数传递给变量
- java - KeyListener 在 JFrame 中随机工作
- python - 链表 Python
- sql - POST到数据库表的第一行?
- python - jupyter抛出错误:socket.gaierror:[Errno -2]名称或服务未知
- javascript - 将分隔线添加到按字母顺序排列的列表
- phpmailer - 邮件程序错误:SMTP 错误:无法验证。邮件程序错误:SMTP 错误:无法验证