python使用日志系统--Apple的学习笔记

一,前言

之前QT工程已经学习了日志系统35.QT重定向日志系统--Apple的学习笔记,对于一个正规的App基本上都带有日志系统,便于调试记录问题。我最近在开发python小工具,之前遇到的问题是自定义的所谓系统日志无法输出到我定义的error.txt,因为我没想到使用python自带的日志模块功能。

二,需求

python日志系统模块使用,主要是能捕获系统自带报错。

三,设计

网上学习了下,原来用法和我之前QT中用的spdlog日志库的api功能类似。所以很容易理解这些api。
其中最关键的就是exc_info=True,为True则可以输出系统错误日志。为False则不会输出,只能输出我写入的内容。

import traceback,logging
import csv
import os
......
if __name__ == "__main__":
    try:
        readcsv()
    except Exception as e:
        log = logging.getLogger("log error")
        fmt = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
        # 创建一个handler,用于写入日志文件
        rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
        log_path = os.path.dirname(os.getcwd()) + '/logs/'
        log_name = log_path + 'log.txt'
        logfile = log_name
        file = logging.FileHandler(logfile, mode='w')
        log.setLevel("DEBUG")
        file.setFormatter(fmt)
        log.addHandler(file)
        # 将堆栈中的信息输入到log上
        #log.debug(traceback.format_exc())
        log.info(u"Log start")
        # exc_info设置为true,则将堆栈中的信息输入到log上,便于调试
        log.error('readcsv break down', exc_info=True)

四 ,效果

2021-09-09 19:59:21,783 - ReadInputFile.py[line:92] - INFO: Log start
2021-09-09 19:59:21,783 - ReadInputFile.py[line:94] - ERROR: readcsv break down
Traceback (most recent call last):
  File "D:/py/excelToDBC/CAPLgen_src/lib/ReadInputFile.py", line 62, in 
    readcsv()
  File "D:/py/excelToDBC/CAPLgen_src/lib/ReadInputFile.py", line 38, in readcsv
    with open(os.path.abspath(os.path.dirname(os.getcwd())) + "\\input\\" + FileName, 'r') as fr:
FileNotFoundError: [Errno 2] No such file or directory: 'D:\\py\\excelToDBC\\CAPLgen_src\\input\\inputCANMatrix.csv'

五,小结

其实很多技术是相通的,可迁移的,我今天日志系统的学习就是一次验证。最喜欢学习的就是这些可迁移的技能和技术思想了,哈哈~

你可能感兴趣的:(python使用日志系统--Apple的学习笔记)