我有以下两个记录器--流记录器和文件记录器.

# Set up the Logging modules
tmp_file = tempfile.NamedTemporaryFile(mode='w+')
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
c_handler = logging.StreamHandler()
f_handler = logging.FileHandler(tmp_file.name)
c_handler.setFormatter(logging.Formatter('[%(asctime)s %(levelname)s]\t%(message)s'))
f_handler.setFormatter(logging.Formatter('[%(asctime)s] - %(levelname)s %(funcName)s:L%(lineno)s: %(message)s'))
logger.addHandler(c_handler)
logger.addHandler(f_handler)

我希望Stream记录器有logging.INFO的水平(它目前是正确的)和File记录器有logging.DEBUG的水平.我该怎么做呢?

推荐答案

您可以使用Handler.setLevel方法 for each 处理程序设置单独的日志(log)记录级别,在为logger对象设置的级别之上:

tmp_file = tempfile.NamedTemporaryFile(mode='w+')
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG) # note here
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.INFO) # note here
f_handler = logging.FileHandler(tmp_file.name)
f_handler.setLevel(logging.DEBUG) # note here
c_handler.setFormatter(logging.Formatter('[%(asctime)s %(levelname)s]\t%(message)s'))
f_handler.setFormatter(logging.Formatter('[%(asctime)s] - %(levelname)s %(funcName)s:L%(lineno)s: %(message)s'))
logger.addHandler(c_handler)
logger.addHandler(f_handler)

以便:

logger.debug('hi')

将向临时文件生成日志(log)记录,而不向控制台生成输出.

演示:https://replit.com/@blhsing1/SpryHeartfeltError

Python相关问答推荐

根据条件将新值添加到下面的行或下面新创建的行中

如何删除索引过go 的lexsort深度可能会影响性能?' &>

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

log 1 p numpy的意外行为

数据抓取失败:寻求帮助

OR—Tools CP SAT条件约束

如何在WSL2中更新Python到最新版本(3.12.2)?

在ubuntu上安装dlib时出错

python中的解释会在后台调用函数吗?

Python Pandas获取层次路径直到顶层管理

基于形状而非距离的两个numpy数组相似性

python中csv. Dictreader. fieldname的类型是什么?'

Python Pandas—时间序列—时间戳缺失时间精确在00:00

如何使用使用来自其他列的值的公式更新一个rabrame列?

使用Python异步地持久跟踪用户输入

如何在Python 3.9.6和MacOS Sonoma 14.3.1下安装Pyregion

查看pandas字符列是否在字符串列中

jsonschema日期格式

从列表中分离数据的最佳方式

VSCode Pylance假阳性(?)对ImportError的react