zoukankan      html  css  js  c++  java
  • Python之日志模块

    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文件见下图

  • 相关阅读:
    git命令评测
    so文件成品评论【整理】
    Codeforces 85B. Embassy Queue【段树、馋】
    JPEG图像扩展信息读取和修改
    【 D3.js 入门系列 --- 0 】 简介及安装
    unity3d 学习笔记(三)
    ListView 泛利
    [React] Create an Auto Resizing Virtualized List with react-virtualized
    [PReact] Integrate Redux with Preact
    [Preact] Integrate react-router with Preact
  • 原文地址:https://www.cnblogs.com/DeryKong/p/14145476.html
Copyright © 2011-2022 走看看