Python logging 使用小贴士
example one
import logging,os
rdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #获取上级目录的绝对路径
log_dir = rdir + '/record.log'
def getLogger():
"""
==============
log-print handle
==============
:return logger: log object
"""
fm = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s: - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S') #设置日志格式
fh = logging.FileHandler(log_dir,encoding='utf-8') #创建一个文件流并设置编码utf8
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(fm)
logger = logging.getLogger() #获得一个logger对象,默认是root
logger.setLevel(logging.DEBUG) #设置最低等级debug
logger.addHandler(fh) #把文件流添加进来,流向写入到文件
logger.addHandler(ch)
fh.setFormatter(fm) #把文件流添加写入格式
return logger
"""
============================
test
============================
log=get_logger()
log.debug('test debug')
log.info('test info')
log.warning('test warning')
log.error('test error')
log.critical('test critical')
log.info("a:%s\n b:%s\n c:%d\n\n",'a','b',10)
log.info("{}".format(v))
"""
example two
#!/usr/bin/python
# -*- coding:utf-8 -*-
import logging
import time
import os
class Log(object):
'''
封装后的logging
'''
def __init__(self, logger=None, log_cate='search'):
'''
指定保存日志的文件路径,日志级别,以及调用文件
将日志存入到指定的文件中
'''
# 创建一个logger
self.logger = logging.getLogger(logger)
self.logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
self.log_time = time.strftime("%Y_%m_%d")
file_dir = os.getcwd() + '/../log'
if not os.path.exists(file_dir):
os.mkdir(file_dir)
self.log_path = file_dir
self.log_name = self.log_path + "/" + log_cate + "." + self.log_time + '.log'
# print(self.log_name)
fh = logging.FileHandler(self.log_name, 'a') # 追加模式 这个是python2的
# fh = logging.FileHandler(self.log_name, 'a', encoding='utf-8') # 这个是python3的
fh.setLevel(logging.INFO)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)
# 定义handler的输出格式
formatter = logging.Formatter(
'[%(asctime)s] %(filename)s->%(funcName)s line:%(lineno)d [%(levelname)s]%(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
self.logger.addHandler(fh)
self.logger.addHandler(ch)
# 添加下面一句,在记录日志之后移除句柄
# self.logger.removeHandler(ch)
# self.logger.removeHandler(fh)
# 关闭打开的文件
fh.close()
ch.close()
def getlog(self):
return self.logger
请多多指教。
文章标题:Python logging 使用小贴士
本文作者:顺强
发布时间:2017-03-18, 23:59:00
原始链接:http://shunqiang.ml/python-python-logging/版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。