最近搞了个爬数据的程序,为了测试某些可行性需要长时间挂着,并输出一些状态进行检查。昨晚用print+重定向先跑起来了,今天登上服务器一看,啥也没有。。。(本地测试的时候,程序退出后是有内容写入的)。偷懒失败,还是要乖乖写日志。
Python内置了日志模块logging,简单看下来非常方便。我需要的控制台+文件写入、按时间拆分日志都有支持。
import logging
from logging.handlers import TimedRotatingFileHandler
_level = logging.DEBUG
# 日志内容格式化:时间(毫秒级) [级别] 内容
_format = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s')
Log = logging.getLogger('')
Log.setLevel(_level)
# 输出到控制台
_console = logging.StreamHandler()
_console.setFormatter(_format)
# 输出到文件(按天拆分日志)
# 当前使用的log文件名为:log
# 历史文件名:log.日期
_file = TimedRotatingFileHandler('E:/pylog/log', 'D', 1, 0, 'utf-8')
_file.setFormatter(_format)
Log.addHandler(_console)
Log.addHandler(_file)
# 内容输出使用Log实例
短短几行代码就满足了我对日志的功能需求。性能方面,初步设想是开一个日志线程,避免主线程在日志IO上浪费时间。今天看下来,logging好像没有提供这方面的支持。后面实际用到的时候再看吧~