zoukankan      html  css  js  c++  java
  • python基础-logging模块

    loggging日志

      python的logging模块提供了通用的日志系统.这个模块提供不同的日志级别,并可以采用不同的方式记录日志

      注意:python文件的命名是有讲究的,不要把文件名命名的和模块名字一样,这样会一直报错,比如你这里如果命名为logging.py就会一直报错

    logging.basicCongfig函数各参数:

    1.filename  指定日志文件名

    2.filemode  和file函数意义相同,指定日志文件的打开模式,'w'和'a'

    3.format  指定输出的格式和内容,format可以输出很多有用信息:

          %(levelno)s  打印日志级别的数值

          %(levelname)s  打印日志级别名称

          %(pathname)s  打印当前执行程序的路径

          %(filename)s    打印当前执行名

          %(funcName)s    打印日志的当前函数

          %(lineno)d      打印日志的当前行号

          %(lasctime)s      打印日志的时间

          %(thread)d      打印线程ID

          %(threadName)s    打印线程名称

          %(process)d      打印进程ID

          %(message)s      打印日志信息

    4.level  设置统一日志处理器的级别,默认为logging.WARNING

    日志信息,输出在控制台

    import logging
    import os
    
    '''
    logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置
    日志级别等级CRITICAL > ERROR > WARNIG > INFO >DEBUG,
    '''
    
    #log_file = os.path.join(os.getcwd(),'wlog.log')
    #日志格式信息: 日志时间 当前执行名 当前行号 日志级别名称 打印日志信息
    log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s"
    
    '''
    level设定本级别以及以上级别的才会打印.这里注意大小写!
    如果你不写filename和filemode参数则会默认打印到console
    '''
    #level:日志级别 (.)后面是大写, format:日志格式
    logging.basicConfig(level = logging.WARNING,format = log_format)
    #logging.basicConfig(level = logging.WARNING,format = log_format,filename = log_file,filemode = 'w')
    
    #打印日志,
    #级别规则
    #warning级别,可以打出来CRITICAL > ERROR > WARNIG级别的日志
    logging.warning('warning message')
    #error级别
    logging.error('error message')
    logging.debug('debug message')

    只在控制台输出,结果:

    2017-06-18 23:04:55,444 日志.py [line:26] WARNING: warning message
    2017-06-18 23:04:55,444 日志.py [line:28] ERROR: error message

    日志信息,输出在指定位置的文件中

    import logging
    import os
    
    '''
    logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置
    日志级别等级CRITICAL > ERROR > WARNIG > INFO >DEBUG,
    '''
    
    #os的拼接,记录文件的路径,os取的当前路径,也可以自己设置位置,wlog.log文件名称
    log_file = os.path.join(os.getcwd(),'wlog.log')
    print(os.getcwd())
    #日志格式信息: 日志时间 当前执行名 当前行号 日志级别名称 打印日志信息
    log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s"
    
    '''
    level设定本级别以及以上级别的才会打印.这里注意大小写!
    如果你不写filename和filemode参数则会默认打印到console
    '''
    #level:日志级别 (.)后面是大写, format:日志格式
    #logging.basicConfig(level = logging.WARNING,format = log_format)
    logging.basicConfig(level = logging.WARNING,format = log_format,filename = log_file,filemode = 'w')
    
    #打印日志,
    #级别规则
    #warning级别,可以打出来CRITICAL > ERROR > WARNIG级别的日志
    logging.warning('warning message')
    #error级别
    logging.error('error message')
    logging.debug('debug message')

    只在指定位置的输出日志文件,结果:

    同时在控制台和指定路径的文件中输出日志信息

    import logging
    '''实现,让日志信息既在控制台,也在指定路径的文件中输出'''
    #日志级别等级 CRITICAL > ERROR > WARNING > INFO > DEBUG
    
    #创建一个logger,顶级的根目录getlogger,有两个分支,一个是FileHander,一个是StreamHandler
    logger = logging.getLogger('mylogger')
    logger.setLevel(logging.INFO)
    
    #创建一个handler,将log写入文件
    fh = logging.FileHandler('D:python workspacewlog_console.log',mode = 'w')
    fh.setLevel(logging.INFO)
    
    #再创建一个handler,将log输出到控制台
    ch = logging.StreamHandler()
    ch.setLevel(logging.INFO)
    
    #设置输出格式
    log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s"
    #把格式添加进来
    formatter = logging.Formatter(log_format)
    fh.setFormatter(formatter)
    ch.setFormatter(formatter)
    
    
    #把handler添加到logger里,其实你理解为汇报给大领导即可
    logger.addHandler(fh)
    logger.addHandler(ch)
    
    logger.error('下雨了')
    logger.info('打雷了')
    logger.debug('收衣服了')

    结果:

    控制台输出:

    2017-06-19 00:14:01,182 日志2.py [line:32] ERROR: 下雨了
    2017-06-19 00:14:01,182 日志2.py [line:33] INFO: 打雷了

    文件中输出:

  • 相关阅读:
    docker-5-容器数据卷
    docker-4-镜像
    docker-3-常用命令(下)
    docker-3-常用命令(中)
    docker-3-常用命令(上)
    docker-2-安装
    Python中Unicode字符串
    Python中整数和浮点数
    Python中什么是变量
    Python中数据类型
  • 原文地址:https://www.cnblogs.com/R-bear/p/7045994.html
Copyright © 2011-2022 走看看