PYthon之日志模块
1、目录结构
File
|-----logFiles
|-----utils
|------handle_log.py
|------test.py
2、handle_log.py 代码如下
# coding = utf-8 # author: DeyouKong # 时间: 2020年12月16日 import os import sys import logbook sys.path.append("../") BASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) sys.path.append(BASE_DIR) from logbook import Logger, StreamHandler, FileHandler, TimedRotatingFileHandler from logbook.more import ColorizedStderrHandler def log_content(record, handler): log = "[{date}] [{level}] [{filename}] [{func_name}] [{lineno}] {msg}".format( date=record.time, # log time level=record.level_name, # log level filename=os.path.split(record.filename)[-1], # ffilename func_name=record.func_name, # function name lineno=record.lineno, # line number in run file msg=record.message # log message ) return log """ The path to save log file """ LOG_DIR = BASE_DIR + "/logFiles" if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR) """ The log message print to the screen """ log_std = ColorizedStderrHandler(bubble=True) log_std.formatter = log_content """ The log message write to the file """ log_file = TimedRotatingFileHandler( os.path.join(LOG_DIR, "%s.log" % "log"), date_format='%Y-%m-%d', bubble=True, encoding='utf-8' ) log_file.formatter = log_content """ Log for script """ run_log = Logger("global_log") def init_logger(): logbook.set_datetime_format("local") run_log.handlers = [] run_log.handlers.append(log_file) run_log.handlers.append(log_std) return "" ''' 日志等级: critical 严重错误,会导致程序退出 error 可控范围内的错误 warning 警告信息 notice 大多情况下希望看到的记录 info 大多情况不希望看到的记录 debug 调试程序时详细输出的记录 ''' # 实例化,默认调用 logger = init_logger() if __name__ == "__main__": run_log.info("Test info log message") run_log.notice("Test notice log message") run_log.warning("Test warning log message") run_log.error("Test error log message")
运行后,屏幕输出
[2020-12-16 18:06:01.594226] [INFO] [handle_log.py] [] [68] Test info log message [2020-12-16 18:06:01.594957] [NOTICE] [handle_log.py] [] [69] Test notice log message [2020-12-16 18:06:01.595196] [WARNING] [handle_log.py] [] [70] Test warning log message [2020-12-16 18:06:01.595355] [ERROR] [handle_log.py] [] [71] Test error log message
logFiles下面新建了 logFiles/log-2020-12-16.log文件 ,内容与屏幕输出一致
3、同目录下新建 test.py
test.py
from handle_log import run_log as logger import requests import json def TestOne(): logger.info("start run Test One") if 1==1: logger.notice("into the first check") if __name__ == "__main__": TestOne()
运行 test.py,屏幕输出
[2020-12-16 18:30:53.563785] [INFO] [test.py] [TestOne] [6] start run Test One
[2020-12-16 18:30:53.564630] [NOTICE] [test.py] [TestOne] [8] into the first check
log文件见下图