logging用法

logging用法

举例

logging用法

import logging

class Logger:

  def addlog(self):

    #打印日志到文件

    logpath=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    file=time.strftime('%Y-%m-%d_%H_%M_%S',time.localtime(time.time()))+'.log'          #文件名里不能有空格和冒号

    logging.basicConfig(level=logging.DEBUG ,

              format=' %(asctime)s %(name)-12s %(levelname)-8s %(message)s ' ,

              datefmt=' %m-%d %H:%M ' ,

               filename=logpath + ' \log\ ' + str(file) , 

              filemode=' a ')

    #打印日志到控制台

    console=logging.StreamHandle()

    console.setLevel(logging.DEBUG)

    formatter=logging.Formatter( ' %(name)-12s %(levelname)-8s %(message)s ' )

    console.setFormatter(formatter)

    logging.getLogger( ' ' ) . addHandler(console)

    return file

应用的时候:

import Logger    

Logger().addlog()

级别 数字值
CRITICAL 50
ERROR 40
WARNING 30
INFO 20
DEBUG 10
NOTSET 0
DEBUG 详细信息,一般只在调试问题时使用。
INFO 证明事情按预期工作。
WARNING 但是软件还是会照常运行。
ERROR 由于更严重的问题,软件已不能执行一些功能了。
CRITICAL 严重错误,表明软件已不能继续运行了。

用logging.basicConfig()方法打印

日志级别: debug < info < warning < error < critical
logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
logging.warning('waring级别,一般用来打印警信息')
logging.error('error级别,一般用来打印一些错误信息')
logging.critical('critical 级别,一般用来打印一些致命的错误信息,等级最高')

打印到控制台:
logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
                    level=logging.DEBUG)
logging.debug('debug 信息')
logging.info('info 信息')
logging.warning('warning 信息')
logging.error('error 信息')
logging.critical('critial 信息')


打印到文件,如果在logging.basicConfig()设置filename 和filemode,则只会保存log到文件,不会输出到控制台。
logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
                    filename='new.log',
                    filemode='a',##  模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志,#a是追加模式,默认如果不写的话,就是追加模式
                    format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s' #日志格式
                    )


Formatters

Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S,下面是Formatter常用的一些信息

%(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

用户输出的消息



来源,具体请查看以下链接
https://www.cnblogs.com/nancyzhu/p/8551506.html