python日志模块

logging模块

日志格式

常用格式

  • %(levelno)s: 打印日志级别的数值
  • %(levelname)s: 打印日志级别名称
  • %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
  • %(filename)s: 打印当前执行程序名
  • %(funcName)s: 打印日志的当前函数
  • %(lineno)d: 打印日志的当前行号
  • %(asctime)s: 打印日志的时间
  • %(thread)d: 打印线程ID
  • %(threadName)s: 打印线程名称
  • %(process)d: 打印进程ID
  • %(message)s: 打印日志信息

控制台日志

import logging
import time

logformat = '%(asctime)s - %(filename)s[line:%(lineno)d] [%(funcName)s]- %(levelname)s: %(message)s'  # 日志格式
logging.basicConfig(level=logging.DEBUG, format=logformat)  # 设置日志级别,设置日志格式
logging.debug('DEBUG')
logging.info('INFO')
logging.error('ERROR')

文件日志

import logging
import time
import os
# 第一步,创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)  # Log等级总开关
# 第二步,创建一个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 + rq + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG)  # 输出到file的log等级的开关
# 第三步,定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
# 第四步,将logger添加到handler里面
logger.addHandler(fh)
# 日志
logger.debug('this is a logger debug message')
logger.info('this is a logger info message')
logger.warning('this is a logger warning message')
logger.error('this is a logger error message')
logger.critical('this is a logger critical message')

控制台文件日志

import logging
import time
import os

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

# 创建日志文件handler,用于写日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))  # 日志文件用时间戳命名
log_path = './'
log_name = log_path + rq + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')
fh.setLevel(logging.DEBUG)

# 创建控制台日志handler
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)

# 设置日志格式
logformat = '%(asctime)s - %(filename)s[line:%(lineno)d] [%(funcName)s]- %(levelname)s: %(message)s'  # 日志格式
formatter = logging.Formatter(logformat)  # 使用Formatter方法将字符串转换成合法格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)

logger.addHandler(fh)
logger.addHandler(ch)

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

多文件日志

  1. 建一个专门管理日志的模块,设置好日志格式
  2. 当需要输出文件时,直接导入建好的日志模块然后导入logging包

参考