第十章、logging模块

一、logging模块及日志框架

  1. 导入方式

    import logging
  2. 作用

    写日志

  3. 模块功能

    # V1
    import logging logging .debug(('调试')) #10
    logging.info('正常') #20
    logging.critical('严重错误') #30
    logging.error('错误') #40
    logging.warning('警告') #50
    #默认级别为30以上的可以打印
    # V2
    import logging logging.basicConfig(filename='access.log',
    format='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
    level=10) logging.debug('调试信息') # 10
    logging.info('正常信息') # 20
    logging.warning('警告信息') # 30
    logging.error('报错信息') # 40
    logging.critical('严重错误信息') # 50
    # V3
    import logging #1.生成一个logger对象
    logger = logging.getLogger('jiayi') # 2. 生成格式
    formmater1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',)
    formmater2 = logging.Formatter('%(asctime)s : %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',)
    formmater3 = logging.Formatter('%(name)s %(message)s',) # 3. 生成一个文件对象
    h1 = logging.FileHandler('h1.log')
    h2 = logging.FileHandler('h2.log')
    sm = logging.StreamHandler() # 4. 文件绑定格式
    h1.setFormatter(formmater1)
    h2.setFormatter(formmater2)
    sm.setFormatter(formmater3) # 5. 绑定文件
    logger.addHandler(h1)
    logger.addHandler(h2)
    logger.addHandler(sm) # 6. 控制级别
    logger.level = 10 #输出级别为10以上的错误 # 7. 使用
    logger.debug('调试信息') # 10
    logger.info('正常信息') # 20
    logger.warning('警告信息') # 30
    logger.error('报错信息') # 40
    logger.critical('严重错误信息') # 50
  4. 日志框架

    import os
    import logging.config # 定义三种日志输出格式 开始
    standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
    '[%(levelname)s][%(message)s]' # 其中name为getLogger()指定的名字;lineno为调用日志输出函数的语句所在的代码行
    simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
    id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
    # 定义日志输出格式 结束 # ********
    logfile_dir = os.path.dirname(os.path.abspath(__file__)) # log文件的目录,需要自定义文件路径 # atm
    logfile_dir = os.path.join(logfile_dir, 'log') # C:\Users\oldboy\Desktop\atm\log
    print(logfile_dir)
    logfile_name = 'log.log' # log文件名,需要自定义路径名
    # ***** # 如果不存在定义的日志目录就创建一个
    if not os.path.isdir(logfile_dir): # C:\Users\oldboy\Desktop\atm\log
    os.mkdir(logfile_dir) # log文件的全路径
    logfile_path = os.path.join(logfile_dir, logfile_name) # C:\Users\oldboy\Desktop\atm\log\log.log
    print('logfile_path:',logfile_path)
    # 定义日志路径 结束 # log配置字典
    LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
    'standard': {
    'format': standard_format
    },
    'simple': {
    'format': simple_format
    },
    },
    'filters': {}, # filter可以不定义
    'handlers': {
    # 打印到终端的日志
    'console': {
    'level': 'DEBUG',
    'class': 'logging.StreamHandler', # 打印到屏幕
    'formatter': 'simple'
    },
    # 打印到文件的日志,收集info及以上的日志
    'default': {
    'level': 'INFO',
    'class': 'logging.handlers.RotatingFileHandler', # 保存到文件
    'formatter': 'standard',
    'filename': logfile_path, # 日志文件
    'maxBytes': 1024 * 1024 * 5, # 日志大小 5M (*****)
    'backupCount': 5,
    'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了
    },
    },
    'loggers': {
    # logging.getLogger(__name__)拿到的logger配置。如果''设置为固定值logger1,则下次导入必须设置成logging.getLogger('logger1')
    '': {
    # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
    'handlers': ['default', 'console'],
    'level': 'DEBUG',
    'propagate': False, # 向上(更高level的logger)传递
    },
    },
    } def load_my_logging_cfg():
    logging.config.dictConfig(LOGGING_DIC) # 导入上面定义的logging配置
    logger = logging.getLogger(__name__) # 生成一个log实例
    logger.info('It works!') # 记录该文件的运行状态 return logger if __name__ == '__main__':
    load_my_logging_cfg()

    直接复制这段代码到py文件里,自己导入一下,然后看这块代码

    def load_my_logging_cfg():
    logging.config.dictConfig(LOGGING_DIC) # 导入上面定义的logging配置
    logger = logging.getLogger(__name__) # 生成一个log实例
    logger.info('It works!') # 记录该文件的运行状态 return logger

    别的文件里调用这个函数,引用内部函数,调整一下自己想要的格式,信息就能用了,不用看里面具体做什么

第十章、logging模块的更多相关文章

  1. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  2. logging 模块误用导致的内存泄露

    首先介绍下怎么发现的吧, 线上的项目日志是通过 logging 模块打到 syslog 里, 跑了一段时间后发现 syslog 的 UDP 连接超过了 8W, 没错是 8 W. 主要是 logging ...

  3. python logging模块详解[转]

    一.简单将日志打印到屏幕: import logging logging.debug('debug message') logging.info('info message') logging.war ...

  4. python logging模块

    1.logging模块提供了四个组件logger:日志类,有两个功能1)配置日志的等级,处理器handler,过滤器filterlogger.setLevel(logging.INFO)logger. ...

  5. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

  6. Python之logging模块

    一.引言 之前在写一些小程序的时候想把日志内容打到文件中,所以就自己写了一个logger.py的程序,如下: #!/usr/bin/python # -*- coding=utf-8 -*- impo ...

  7. logging模块转载博客

     转载自:http://blog.csdn.net/zyz511919766/article/details/25136485 简单将日志打印到屏幕: [python] view plain copy ...

  8. Python中的logging模块

    http://python.jobbole.com/86887/ 最近修改了项目里的logging相关功能,用到了python标准库里的logging模块,在此做一些记录.主要是从官方文档和stack ...

  9. Python中的日志管理Logging模块

    1.基本的用法 import logging logging.debug('This is debug message') logging.info('This is info message') l ...

随机推荐

  1. hadoop安装和环境配置---1

    一.安装java 1.下载 : yum install java-1.7.0-openjdk 2.配置环境变量 vim /etc/profile 要先看自己安装的java全名 然后再环境配置 expo ...

  2. WebServer_参考

    参考:http://blog.csdn.net/cjsafty/article/details/9323425 这里顺便记录下几个页面      lajphttps://code.google.com ...

  3. PHP上传超大文件解决方案

    一提到大文件上传,首先想到的是啥??? 没错,就是修改php.ini文件里的上传限制,那就是upload_max_filesize.修改成合适参数我们就可以进行愉快的上传文件了.当然啦,这是一般情况下 ...

  4. Kafka管理与监控——彻底删除topic

    一.配置 server.properties 设置 delete.topic.enable=true 如果没有设置 delete.topic.enable=true,则调用kafka 的delete命 ...

  5. wxPython在frame窗口修改图标

    self.m_panel4 = wx.Panel( self.m_notebook5, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.TAB_TR ...

  6. 给php安装openssl扩展

    转自 http://blog.csdn.net/sinat_23678421/article/details/42217971

  7. Tanimoto Coefficient

    Tanimoto Coefficient The Tanimoto coefficient between two points, a and b, with k dimensions is calc ...

  8. SpringBoot: 6.文件上传(转)

    1.编写页面uploadFile.html <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  9. 【转帖】 解开龙芯与mips4000的关系

    -- 苏联给的套件,我们只要把电子管插上就好. -- 千万次机器,不晓得来源 DJS-130系列,16位小型机,仿造美国NOVA DJS-180系列,超级小型机,仿造美国DEC VAX, 能跑DEC的 ...

  10. Oracle-DQL 5- 分组函数(多行函数)

    分组函数(多行函数):--针对表中的多行数据进行运算,返回一个结果 1.多行函数 --sum() 求和SELECT SUM(sal) FROM emp; --avg() 求平均值SELECT AVG( ...