编辑
2026-04-01
undefined
00

目录

日志输出级别
日志输出格式
设置日志输出格式 fmt = logging.Formatter( '%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s') stream_handler.setFormatter(fmt)
日志输出到文件
封装logging工具
代码重构可进一步对logging工具进行代码优化: [password pass='5566@Vip' desc='输入密码可见'] config/project_config.py import time
日志存储路径

logging模块主要是为了记录程序运行期间产生的日志信息。

日志输出级别

有5个(10、20、30、40、50): debug: 代码调试时输出的日志信息 info: 代码正常运行过程中输出的日志信息 warning: 代码运行结果可能和预期结果发生偏差时输出的日志信息 error: 代码出现异常时输出的日志信息 critical(fatal): 一般遇不到,遇到了也解决不了的问题,例如:磁盘或者内存空间已满等

logging默认设置是warning级别, 可以设置日志输出级别:

import logging # 构造logger对象 logger = logging.getLogger() # 构造stream_handler,得到一个将日志输出到控制台的Handler对象 stream_handler = logging.StreamHandler() # logger对象添加stream_handler logger.addHandler(stream_handler) # 设置日志输出级别 logger.setLevel(logging.INFO) # 使用logger logger.debug('debug') logger.info('info') logger.warning('warning') logger.error('error') logger.critical('critical')

日志输出格式

设置日志输出格式 fmt = logging.Formatter( '%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s') stream_handler.setFormatter(fmt)

日志输出到文件

import logging

logger = logging.getLogger()

file_handler = logging.FileHandler( './test.log', encoding='utf-8')  # 构造file_handler fmt = logging.Formatter( '%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s') file_handler.setFormatter(fmt)

logger.addHandler(file_handler) logger.setLevel(logging.INFO)

logger.debug('debug') logger.info('info') logger.warning('warning') logger.error('error') logger.critical('critical')

封装logging工具

import logging

class Logging: def init(self, level=20): self.logger = logging.getLogger() self.logger.setLevel(level)

def init_logger(): logger = Logging().logger stream_handler = logging.StreamHandler() file_handler = logging.FileHandler('./test.log', encoding='utf-8') fmt = logging.Formatter( '%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s') stream_handler.setFormatter(fmt) file_handler.setFormatter(fmt)

logger.addHandler(stream_handler) logger.addHandler(file_handler) return logger</pre>

代码重构可进一步对logging工具进行代码优化: [password pass='5566@Vip' desc='输入密码可见'] config/project_config.py import time

日志存储路径

log_root_path = './logs/'

log_fname = log_root_path + f"pyetl-{time.strftime('%Y%m%d-%H',time.localtime(time.time()))}.log"

log_level = 20 util/logging_util.py

""" 这个文件的功能,是构建日志输出模块 方便后续快速的在程序中输出日志信息 """ import logging from config.project_config import log_fname, log_level class Logging: def init(self, level=20): self.logger = logging.getLogger() self.logger.setLevel(level) def init_logger(): logger = Logging(log_level).logger # 避免重复输出日志 if logger.handlers: return logger stream_handler = logging.StreamHandler() file_handler = logging.FileHandler(log_fname, encoding='utf-8') fmt = logging.Formatter( '%(asctime)s - [%(levelname)s] - %(filename)s[%(lineno)d]: %(message)s') stream_handler.setFormatter(fmt) file_handler.setFormatter(fmt) logger.addHandler(stream_handler) logger.addHandler(file_handler) return logger

main.pyfrom util.logging_util import init_logger logger = init_logger() logger.info('测试 info')

[/password]

本文作者:a

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!