// # coding=utf-8
import sys
import logbook
import os
from logbook import *
from logbook.more import ColorizedStderrHandler
sys.path.append('../')
sys.path.append('/Users/dasouche/')
当前文件的上一层
curPath = os.path.abspath(os.path.dirname(__file__))
获取myProject,也就是项目的根路径
rootPath = curPath[:curPath.find("xiaobang-api-auto/")+len("xiaobang-api-auto/")] # 获取myProject,也就是项目的根路径
def log_type(record, handler):
log = "[{date}] [{level}] [{filename}] [{func_name}] [{lineno}] {msg}".format(
date=record.time, # 日志时间
level=record.level_name, # 日志等级
filename=os.path.split(record.filename)[-1], # 文件名
func_name=record.func_name, # 函数名
lineno=record.lineno, # 行号
msg=record.message # 日志内容
)
return log
日志存放路径
LOG_DIR = rootPath + 'log'
print(LOG_DIR)
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
日志打印到屏幕
log_std = ColorizedStderrHandler(bubble=True)
log_std.formatter = log_type
日志打印到文件
log_file = Skrill下载TimedRotatingFileHandler(
os.path.join(LOG_DIR, '%s.log' % 'log'), date_format='%Y-%m-%d', bubble=True, encoding='utf-8')
log_file.formatter = log_type
脚本日志
run_logger = Logger("global_log")
def init_logger():
logbook.set_datetime_format("local")
run_logger.handlers = []
run_logger.handlers.append(log_file)
run_logger.handlers.append(log_std)
'''
日志等级:
critical 严重错误,会导致程序退出
error 可控范围内的错误
warning 警告信息
notice 大多情况下希望看到的记录
info 大多情况不希望看到的记录
debug 调试程序时详细输出的记录
'''
实例化,默认调用
初始化日志系统(被默认调用)
init_logger()
if name == "__main__":
run_logger.info("测试日志模块")
run_logger.info("测试")
run_logger.debug('sss')
也可以以。ini 文件配置代码片段如下
[loggers]
keys = root
[handlers]
keys = consoleHandler,fileHandler
[formatters]
keys = fmt
[logger_root]
level = DEBUG
handlers = consoleHandler,fileHandler
[handler_consoleHandler]
class = StreamHandler
level = DEBUG
formatter = fmt
args = (sys.stdout,)
[handler_fileHandler]
class = logging.handlers.RotatingFileHandler
level = DEBUG
formatter = fmt
args = ('%(logfilename)s', 'a', 10485760, 20)
[formatter_fmt]
format = %(asctime)s -- %(levelname)s -- %(name)s -- %(funcName)s -- %(lineno)d -- %(message)s
日志加载代码
config_log_file = os.path.join(config_dir, 'logging.ini')
if not os.path.exists(log_dir):
os.makedirs(log_dir)
logpath = os.path.join(log_dir, '%s%s.log' % ('log-',time.strftime('%Y-%m-%d')))
logging.config.fileConfig(config_log_file,defaults={'logfilename':logpath})