Python的Logging使用
source link: https://dawnki.github.io/2018/06/10/logging%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Logging日志模块
Python 2.7
Logging 0.5.1.2
Logging日志模块主要有这四部分组成
部分 描述
logger 提供日志接口,在python代码中嵌入,进行配置或发送日志信息
handler 将日志记录按照代码进行存储,如存入文件或者socket中
filter 过滤日志记录后交给handler
formatter 指定日志记录的输出格式
日志输出屏幕
直接嵌入在目标代码中,将日志消息发送至屏幕,无需配置handler
日志输出文件
python代码实现
配置文件实现
日志的配置通常使用配置文件实现。
通过fileConfig读取文件配置即可,当然也可以使用 logging.config.dictConfig() ,可以以字典形式读取,十分适合json格式配置的文件.
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
如果设定了日志级别时,输出消息会输出大于等于该级别的日志,小于的级别会省略
常用的Handlers
名称 参数列表 描述
logging.StreamHandler StreamHandler([strm]) strm参数是一个文件对象。使用这个Handler可以向类似与sys.stdout或者sys.stderr的任何文件对象输出信息。
logging.FileHandler FileHandler(filename[,mode]) 和StreamHandler类似,用于向一个文件输出日志信息。不过FileHandler会帮你打开这个文件。filename是文件名,必须指定一个文件名。mode是文件的打开方式。默认是’a’,即追加。
logging.handlers.RotatingFileHandler RotatingFileHandler(filename[, mode[, maxBytes[, backupCount]]]) 这个Handler类似于上面的FileHandler,但是它可以管理文件大小。当文件达到一定大小之后,它会自动将当前日志文件改名,然后创建一个新的同名日志文件继续输出。maxBytes用于指定日志文件的最大文件大小。如果maxBytes为0,意味着日志文件可以无限大。backupCount用于指定保留的备份文件的个数,如果超出个数会删除旧文件。
logging.handlers.TimedRotatingFileHandler TimedRotatingFileHandler( filename [,when [,interval [,backupCount]]]) 这个Handler和RotatingFileHandler类似,不过,它没有通过判断文件大小来决定何时重新创建日志文件,而是间隔一定时间就 自动创建新的日志文件。重命名的过程与RotatingFileHandler类似,不过新的文件不是附加数字,而是当前时间。
logging.handlers.SocketHandler
TCP协议发送日志
logging.handlers.DatagramHandler
UDP协议发送日志
logging.handlers.HTTPHandler
HTTP协议发送日志
logging.handlers.SMTPHandler
将日志通过SMTP协议发送邮件
常用的Forrmatters
参数 含义
%(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 用户输出的消息
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK