python logging 设置

本文详细介绍了使用Python的logging模块进行日志配置的方法,包括设置日志级别、输出格式、时间戳、文件追加及日志文件大小限制等功能,确保日志记录既全面又高效。
部署运行你感兴趣的模型镜像

logging 日志需求

(1) 设置LEVEL

(2) 设置日志输出包含文件名,函数名,行数等.

(3) 设置日志对应的输出时间

(4) 设置日志追加的日志文件

(5) 限定日志文件的大小,若超过,则备份成新文件,新文件个数限定为1

代码如下:

import logging.handlers


# Init logging
LOG = logging.getLogger('node-exporter')
# Set logging level
LOG.setLevel(logging.DEBUG)

# Set output format for logging
fmt = '%(asctime)s %(filename)s [func:%(funcName)s()] [line:%(lineno)d] ' \
      '%(levelname)s %(message)s'
datefmt = '%a, %d %b %Y %H:%M:%S'
log_fmt = logging.Formatter(fmt, datefmt)

# If expoerter.log size is greater than 50M, mv it as exporter.log.1,
#  and new log add to exporter.log.
handler = logging.handlers.RotatingFileHandler(
    '/var/log/node/exporter.log', maxBytes=52428800,
    backupCount=1)

# Add the handler
handler.setFormatter(log_fmt)
LOG.addHandler(handler)

 

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>嗯,用户问的是如何在Python中使用logging模块将日志写入指定的文件路径。我需要先回忆一下logging模块的基本用法,特别是关于文件处理的部分。 首先,我记得logging模块有几个主要的组件,比如Logger、Handler、Formatter。用户需要的是将日志输出到文件,所以应该使用FileHandler。但需要确认是否需要指定路径,比如如果用户给的路径不存在,是否需要自动创建目录,或者应该提醒用户先确保目录存在。 然后,可能需要一个基本的示例代码。例如,先导入logging模块,然后创建一个logger实例,设置日志级别。接着创建FileHandler,指定文件路径,设置处理器的日志级别,再定义日志格式,最后将处理器添加到logger中。这样用户就可以通过logger记录日志到指定文件了。 不过,有可能用户会遇到路径问题,比如权限不足,或者目录不存在导致文件无法创建。这时候是否需要提醒用户处理异常,或者在代码中自动创建目录?比如使用os.makedirs来创建目录结构,但需要先检查是否存在,避免重复创建。 另外,用户可能想知道如何同时输出到控制台和文件,这时候可以添加StreamHandler。不过用户的问题明确是写入文件,所以可能不需要这部分,但作为扩展内容可能有帮助。 还有日志的轮转问题,比如使用RotatingFileHandler或TimedRotatingFileHandler,但用户的问题可能只是基础的文件写入,所以先介绍基本的FileHandler,再提到更高级的处理器作为补充。 需要确保代码示例正确,比如logger的命名,避免使用root logger,而是使用getLogger(__name__)这样的方式。设置logger的propagate属性可能会影响日志的传递,但基础示例可能不需要涉及这些。 还有,设置日志级别的时候,处理器的级别和logger的级别需要匹配,否则可能不会记录预期的日志。例如,logger设置为DEBUG,但handler设置为INFO,那么DEBUG级别的日志不会被处理。 最后,提醒用户测试代码,检查文件是否生成,是否有写入权限,以及日志内容是否正确。可能还需要提到多进程下的日志处理,但可能超出当前问题的范围,暂时不需要涉及。 总结步骤应该是:导入模块,创建logger,创建FileHandler并指定路径,设置格式,添加处理器,然后记录日志。示例代码要简洁,注释清楚,并说明可能出现的问题,如路径不存在需要手动创建或捕获异常。</think>在 Python 中使用 `logging` 模块将日志写入指定文件路径的步骤如下: --- ### 1. 基础配置示例 ```python import logging # 创建 Logger 实例 logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) # 设置最低日志级别 # 创建 FileHandler 并指定文件路径 file_handler = logging.FileHandler('/指定路径/your_log.log') # 替换为实际路径 file_handler.setLevel(logging.DEBUG) # 设置处理器日志级别 # 定义日志格式 formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) file_handler.setFormatter(formatter) # 将 Handler 添加到 Logger logger.addHandler(file_handler) # 测试日志输出 logger.debug('这是一条调试信息') logger.info('这是一条普通信息') logger.warning('这是一条警告信息') ``` --- ### 2. 关键参数说明 - **`FileHandler` 路径** 📁 使用绝对路径 (如 `/home/user/logs/app.log`),或确保相对路径正确 ❗ 如果目录不存在会报错,建议先创建目录: ```python import os os.makedirs('/指定目录', exist_ok=True) # 自动创建目录 ``` - **日志级别匹配** ✅ Logger 的级别 ≥ Handler 的级别才会记录 (例如 Logger 设为 `INFO`,Handler 设为 `DEBUG` 时,Handler 只处理 `INFO` 及以上级别) --- ### 3. 高级用法扩展 #### (1) 同时输出到控制台和文件 ```python # 添加 StreamHandler console_handler = logging.StreamHandler() console_handler.setLevel(logging.INFO) console_handler.setFormatter(formatter) logger.addHandler(console_handler) ``` #### (2) 自动分割日志文件 ```python from logging.handlers import RotatingFileHandler # 每个文件最大 5MB,保留 3 个备份 rotating_handler = RotatingFileHandler( 'app.log', maxBytes=5*1024*1024, backupCount=3 ) logger.addHandler(rotating_handler) ``` --- ### 4. 常见问题排查 - **权限问题** 🔒 检查程序是否有目标文件的写入权限 - **日志未生成** 🔍 检查路径是否正确,确认 `logger.addHandler()` 已调用 - **日志内容缺失** ✅ 确保 Logger 和 Handler 的日志级别设置合理 --- 通过以上配置,您可以将日志准确写入指定路径。建议根据实际需求调整日志格式和处理器类型。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值