美文网首页
logging 模块学习

logging 模块学习

作者: HouserLin | 来源:发表于2016-10-06 21:11 被阅读10次

    1、When to use logging

    level when to use
    DEBUG 细节信息,调试程序
    INFO 证实程序如期运行
    WARNING 出现异常,但程序仍运行
    ERROR 严重问题,程序部分功能不能运行
    CRITICAL 出错,程序不能运行

    2、A simple example

    默认是warning!

    import logging
    logging.warning('Watch out!') # will print a message to the console
    logging.info('I told you so') # will not print anything
    

    consle_result:

    WARNING:root:Watch out!
    

    3、Logging to a file

    import logging
    logging.basicConfig(filename='example.log',level=logging.DEBUG)
    logging.debug('This message should go to the log file')
    logging.info('So should this')
    logging.warning('And this, too')
    

    file_result:

    DEBUG:root:This message should go to the log file
    INFO:root:So should this
    WARNING:root:And this, too
    

    上例中默认是输出文件为a+模式,可以自定义:

    logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
    

    4、Logging variable data

    import logging
    logging.warning('%s before you %s', 'Look', 'leap!')
    

    result:

    WARNING:root:Look before you leap!
    

    This is for backwards compatibility: the logging package pre-dates newer formatting options such as str.format()
    and string.Template
    . These newer formatting options are supported

    5、格式

    import logginglogging.basicConfig(format='%(levelname)s[%(asctime)s] :%(message)s', datefmt='%m/%d/%Y %I:%M:%S %p', level=logging.DEBUG)
    

    6、一般使用方法

    import logging
    # create logger
    logger = logging.getLogger('simple_example')#getLogger自定义值可替换root
    logger.setLevel(logging.DEBUG)
    
    # create console handler and set level to debug
    ch=logging.StreamHandler()
    ch.setLevel(logging.DEBUG)
    
    # create formatter
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    
    # add formatter to ch
    ch.setFormatter(formatter)
    
    # add ch to logger
    logger.addHandler(ch)
    
    # 'application' code
    logger.debug('debug message')
    logger.info('info message')
    logger.warn('warn message')
    logger.error('error message')
    logger.critical('critical message')
    

    7、同时打印到控制台和输出文件

    import logging
    import os
    log = logging.getLogger()
    formatter = logging.Formatter('[%(asctime)s] [%(name)s] %(levelname)s: %(message)s') 
    stream_handler = logging.StreamHandler()
    file_handler = logging.FileHandler(os.path.join(os.getcwd(), 'test.log'))
    
    file_handler.setFormatter(formatter)
    stream_handler.setFormatter(formatter)
    
    log.addHandler(file_handler)
    log.addHandler(stream_handler)
    log.setLevel(logging.DEBUG)
    

    8、使用配置文件

    import logging
    import logging.config
    logging.config.fileConfig('logging.conf')
    
    # create logger
    logger = logging.getLogger('simpleExample')
    
    # 'application' code
    logger.debug('debug message')
    logger.info('info message')
    logger.warn('warn message')
    logger.error('error message')
    logger.critical('critical message')
    

    logging.conf 文件格式:

    [loggers]
    keys=root,simpleExample
    
    [handlers]
    keys=consoleHandler
    
    [formatters]
    keys=simpleFormatter
    
    [logger_root]
    level=DEBUG
    handlers=consoleHandler
    
    [logger_simpleExample]
    level=DEBUG
    handlers=consoleHandler
    qualname=simpleExample
    propagate=0
    
    [handler_consoleHandler]
    class=StreamHandler
    level=DEBUG
    formatter=simpleFormatter
    args=(sys.stdout,)
    
    [formatter_simpleFormatter]
    format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
    datefmt=
    

    相关文章

      网友评论

          本文标题:logging 模块学习

          本文链接:https://www.haomeiwen.com/subject/xvaeyttx.html