zoukankan      html  css  js  c++  java
  • python初步学习-python模块之 logging

    logging

    许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪。在python中,我们不需要第三方的日志组件,python为我们提供了简单易用、且功能强大的日志模块:logging

    logging模块支持将日志信息保存到不同的日志域中,如:保存到日志文件中;以邮件的形式发送日志信息;以http getpost的方式提交日志到web服务器;以windows事件的形式记录等等。

    logging官网
    参考blog

    简单的例子:

    # 导入 logging 包
    import logging
    #为生成的日志做一些基本的配置
    #比如下面配置了日志文件的绝对路径和日志等级
    logging.basicConfig(filename=os.path.join(os.getcwd(),'test.log'),level=loggin.DEBUG)
    logging.debug('this is a message!')
    

    运行上面例子的代码,将会在程序的根目录下创建一个test.log的文件,打开该文件,里面有一条日志记录:"DEBUG:root:this is a message"

    4个主要的组件

    • logger:日志类,应用程序往往通过调用它提供的api来记录日志。
    • handler:对日志信息处理,可以将日志发送(保存)到不同的目标域中;
    • filter:对日志信息进行过滤
    • formatter:日志的格式化

    日志级别

    在记录日志是,日志信息都会关联一个级别("级别"本质上是一个非负整数)。系统默认提供了6个级别,它们分别是

    级别 对应的值
    CRITICAL 50
    ERROR 40
    WARNING 30
    INFO 20
    DEBUG 10
    NOTSET 0

    可以给日志对象(logger instance)设置日志级别,低于该级别的日志信息将会被忽略;也可以给Hanlder设置日志级别,对于低于该级别的日志信息,Handler也会忽略

    logging 模块中常用函数

    logging.basicConfig([**kwargs]):
    为日志模块配置基本信息。kwargs支持如下几个关键字参数:

    • filename:日志文件的保存路径。如果配置了这个参数,将自动创建一个文件句柄作为handler
    • filemode:日志文件的打开模式。默认值为'a',表示日志信息以追加的形式添加到日志文件中。如果设为'w',那么每次程序启动的时候都会创建一个新的日志文件;
    • format:设置日志输出格式
    • datefmt:定义日期格式
    • level:设置日志的级别,对低于该级别的日志信息将会被忽略
    • stream:设置特定的流用于初始化StreamHandler

    下面是一个简单的例子:

    #!/usr/bin/env python
    #coding:utf8
    
    import logging
    logging.basicConfig(filename=os.path.join(os.getcws(),'test.log'),level=logging.WARN,filemode='w',format='%(asctime)s - %(levelname)s: %(message)s')
    logging.debug('debug')  #被忽略
    logging.info('info')  #被忽略
    logging.warning('warn') #记录
    logging.error('error')  #记录
    
    #——————————————结果————————————————
    #2017-11-10 23:23:14,661 - WARNING: warn
    #2017-11-10 23:23:14,663 - ERROR: error
    

    format 的格式

    变量 解释
    %(name)s Logger的名字
    %(levelno)s 数字形式的日志级别
    %(levelname)s 文本形式的日志级别
    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
    %(filename)s 调用日志输出函数的模块的文件名
    %(module)s 调用日志输出函数的模块名
    %(funcName)s 调用日志输出函数的函数名
    %(lineno)d 调用日志输出函数的语句所在的代码行
    %(created)f 当前时间,用UNIX标准的表示时间的浮点数表示
    %(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数
    %(asctime)s 字符串形式的当前时间。默认格式是“2003-07-08 16:49:45,896”。逗号后面的是毫秒
    %(thread)d 线程ID。可能没有
    %(threadName)s 线程名。可能没有
    %(process)d 进程ID。可能没有
    %(message)s 用户输出的消息

    logging.getLogger([name])

    创建一个Logger对象。日志记录的工作主要由Logger对象来完成。在调用getLogger时要提供Logger的名称,logger实例之间有层次关系,这些关系通过Logger名称来实现。

    #!/usr/bin/env python
    #coding:utf8
    
    import logging
    logging.basicConfig(filename=os.path.join(os.getcwd(),'test1.log'),level=logging.WARN,filemode='w',format='%(asctime)s %(name)s %(levelname)s: %(message)s')
    
    a1 = logging.getLogger("alpha")
    b1 = logging.getLogger("beta")
    c1 = logging.getLogger("gamma")
    
    
    a1.warning("this is a test from a1!")
    b1.warning("this is a test from b1!")
    c1.warning("this is a test from c1!")
        
    

    输出结果:

    2017-11-10 23:53:02,448 alpha WARNING: this is a test from a1!
    2017-11-10 23:53:02,448 beta WARNING: this is a test from b1!
    2017-11-10 23:53:02,448 gamma WARNING: this is a test from c1!
    
  • 相关阅读:
    CYPEESS USB3.0程序解读之---同步FIFO(slaveFifoSync)
    CYPEESS USB3.0程序解读之---GPIO
    USB 3.0 开发要点
    关于const声明一些东西
    __attribute__ 你知多少?
    char、signed char、unsigned char的区别总结。
    CentOS7安装配置SAMBA服务器
    linux版本FTP下载
    2021年1月29日
    2021年11月28日
  • 原文地址:https://www.cnblogs.com/pingqiang/p/7817982.html
Copyright © 2011-2022 走看看