zoukankan      html  css  js  c++  java
  • 日志打印longging模块(控制台和文件同时输出)

    在把日志写入文件的同时在控制台输出

    示例代码如下: 

    #coding=utf-8
    
    import logging
    import time
    import os
    dir = os.path.dirname(os.path.abspath('.'))
    log_path = dir + '\log'
    
    
    class Log:
        def __init__(self):
            self.logname = os.path.join(log_path, '{0}.log'.format(time.strftime('%Y-%m-%d')))
    
        def __printconsole(self, level, message):
            # 创建一个logger
            logger = logging.getLogger()
            logger.setLevel(logging.DEBUG)
            # 创建一个handler,用于写入日志文件
            fh = logging.FileHandler(self.logname,'a',encoding='utf-8')
            fh.setLevel(logging.DEBUG)
            # 再创建一个handler,用于输出到控制台
            ch = logging.StreamHandler()
            ch.setLevel(logging.DEBUG)
            # 定义handler的输出格式
            formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
            fh.setFormatter(formatter)
            ch.setFormatter(formatter)
            # 给logger添加handler
            logger.addHandler(fh)
            logger.addHandler(ch)
            # 记录一条日志
            if level == 'info':
                logger.info(message)
            elif level == 'debug':
                logger.debug(message)
            elif level == 'warning':
                logger.warning(message)
            elif level == 'error':
                logger.error(message)
            logger.removeHandler(ch)
            logger.removeHandler(fh)
            # 关闭打开的文件
            fh.close()
    
        def debug(self,message):
            self.__printconsole('debug', message)
    
        def info(self,message):
            self.__printconsole('info', message)
    
        def warning(self,message):
            self.__printconsole('warning', message)
    
        def error(self,message):
            self.__printconsole('error', message)
    
    
    if __name__ == '__main__':
        log = Log()
        log.info('info msg1000013333')
        log.debug('debug msg')
        log.warning('warning msg')
        log.error('error msg')
    

      输出结果如下:

    > "D:Python27python.exe"  "D:workcode	est	estwirteLog.py" 
    2017-05-09 15:09:32,763 - root - INFO - info msg1000013333
    2017-05-09 15:09:32,769 - root - DEBUG - debug msg
    2017-05-09 15:09:32,776 - root - WARNING - warning msg
    2017-05-09 15:09:32,782 - root - ERROR - error msg
  • 相关阅读:
    【bzoj题解】2186 莎拉公主的困惑
    【算法学习】整体二分
    【算法学习】【洛谷】cdq分治 & P3810 三维偏序
    【比赛游记】NOIP2017游记
    【0】如何在电脑中使用多个python版本【python虚拟环境配置】
    Mysql 安装服务无法启动解决方案与使用的一般使用指令
    4-urllib库添加代理,添加请求头格式 模板
    3-urllib的post请求方式
    02-urllib库的get请求方式
    01-urllib库添加headers的一般方法
  • 原文地址:https://www.cnblogs.com/saryli/p/6830674.html
Copyright © 2011-2022 走看看