• 经常使用的一个python logging封装,支持同时向console和文件输出


    为了调试方便,特意将python的logging模块封装了一下,支持同时向console和file输出,支持日志文件回滚。
    (1)myloggingconfig.py

    View Code
    # -*- coding: utf-8 -*-

    '''
    Created on 2011-8-24
    主要用途:
    对程序中所使用的loggong模式做一般性配置
    @author: JerryKwan

    '''

    import logging

    import logging.handlers

    import os

    LEVELS = {'NOSET': logging.NOTSET,
    'DEBUG': logging.DEBUG,
    'INFO': logging.INFO,
    'WARNING': logging.WARNING,
    'ERROR': logging.ERROR,
    'CRITICAL': logging.CRITICAL}

    #set up logging to file

    #logging.basicConfig(level = logging.NOTSET,
    #
    format = "%(asctime)s %(name)-12s %(levelname)-8s %(message)s"
    #
    )

    ## filename = "./log.txt",

    ## filemode = "w")

    # create logs file folder
    logs_dir = os.path.join(os.path.curdir, "logs")
    if os.path.exists(logs_dir) and os.path.isdir(logs_dir):
    pass
    else:
    os.mkdir(logs_dir)

    # define a rotating file handler
    rotatingFileHandler = logging.handlers.RotatingFileHandler(filename ="./logs/log.txt",

    maxBytes = 1024 * 1024 * 50,

    backupCount = 5)

    formatter = logging.Formatter("%(asctime)s %(name)-12s %(levelname)-8s %(message)s")

    rotatingFileHandler.setFormatter(formatter)

    logging.getLogger("").addHandler(rotatingFileHandler)

    #define a handler whitch writes messages to sys

    console = logging.StreamHandler()

    console.setLevel(logging.NOTSET)

    #set a format which is simple for console use

    formatter = logging.Formatter("%(name)-12s: %(levelname)-8s %(message)s")

    #tell the handler to use this format

    console.setFormatter(formatter)

    #add the handler to the root logger

    logging.getLogger("").addHandler(console)

    # set initial log level
    logger = logging.getLogger("")
    logger.setLevel(logging.NOTSET)

    (2)具体使用方法

    import logging
    logger = logging.getLogger(__name__)


    if __name__ == "__main__":
    import myloggingconfig
    msg = “this is just a test”
    logger.info(msg)

    如果想动态更改logging的level,可以通过logging.getLogger("").setLevel(level)进行更改。

  • 相关阅读:
    java 获取两个日期相差的毫秒数
    list 去重复
    java日期处理 calendar 和date
    CSS文字超出div或者span时显示省略号
    null类型的字段加1
    CSS或者JS实现鼠标悬停显示另一元素
    去除空格的js 和 使用正则表达式替换
    php preg_replace正则表达式除去<a>
    PHP页面编码问题
    用php生成09,az
  • 原文地址:https://www.cnblogs.com/Jerryshome/p/2334444.html
Copyright © 2020-2023  润新知