Python logging 模块 捕获异常,并保存为 logging 文件

示例一:logging模块简单使用 basicConfig

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
  
"""
@author:    tz_zs
"""
import logging
import time
import traceback
import sys
  
logging.basicConfig(level=logging.DEBUG,
                    format='asctime:        %(asctime)s \n'  # 时间
                           'filename_line:  %(filename)s_[line:%(lineno)d] \n'  # 文件名_行号
                           'level:          %(levelname)s \n'  # log级别
                           'message:        %(message)s \n'# log信息
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename=sys.path[1] + '/output/test_try_logging.log'# sys.path[1]获取当前的工作路径
                    # stream=sys.stdout,
                    filemode='w'# 如果模式为'a',则为续写(不会抹掉之前的log)
i = 0
while i < 3:
    i += 1
    time.sleep(1)
    try:
        a = 1 / 0
    except ZeroDivisionError, e:
        # traceback.format_exc()为详细情况
        logging.debug("%s____%s\n"
                      "traceback.format_exc():____%s" % (ZeroDivisionError, e, traceback.format_exc()))
        continue
    except BaseException, e:
        logging.debug("%s____%s" % (BaseException, e))
        continue

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import logging
  
  
class ToolLog(object):
  
    @staticmethod
    def get_logger(filename):
        m_logger = logging.getLogger("TzzsToolLog.get_logger"# Logger的名字,可以自定义,但最好是给它一个有意义的名字,方便后续的调试和维护。
        m_logger.setLevel(logging.DEBUG)  # 设置Logger的日志级别。这里的日志级别是DEBUG,表示Logger会记录所有级别大于等于DEBUG的日志消息。
  
        formatter = logging.Formatter('%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s'# 创建一个Formatter实例,设置日志信息的格式。
  
        # 创建一个文件日志处理器并设置级别为DEBUG
        file_handler = logging.FileHandler(filename)
        file_handler.setLevel(logging.DEBUG)
        file_handler.setFormatter(formatter)
        m_logger.addHandler(file_handler)
  
        # 创建一个控制台日志处理器并设置级别为DEBUG
        console_handler = logging.StreamHandler()
        console_handler.setLevel(logging.DEBUG)
        console_handler.setFormatter(formatter)
        m_logger.addHandler(console_handler)
  
        return m_logger

  

 

posted @   CrossPython  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示