logging 日志模块

logging 日志模块
用于便捷记录日志且线程安全的模块
logging将日志打印到屏幕,日志级别大小关系为:
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,固然也能够本身定义日志级别。
DEBUG:详细的信息,一般只出如今诊断问题上。
INFO:确认一切按预期运行
WARNING:一个警告,可能会有一些意想不到的事情发生了,或代表一些问题在不久的未来(例如。磁盘空间低”)。这个软件还能按预期工做
ERROR:个更严重的问题,软件没能执行一些功能
CRITICAL:一个严重的错误,这代表程序自己可能没法继续运行
默认logging默认的日志级别是info,通常基本上全部的程序都是这个级别,排查问题时,将日志级别提高到debug级别
 
日志写入文件
logging.basicConfig 函数对日志的输出格式及方式作相关配置

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt=' %Y/%m/%d %H:%M:%S', filename='myapp.log', filemode='w')
logger = logging.getLogger(__name__)
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')

 

结果,生成.log 文件
2017/11/10 23:53:41 logging_module.py[line:10] DEBUG This is debug message
2017/11/10 23:53:41 logging_module.py[line:11] INFO This is info message
2017/11/10 23:53:41 logging_module.py[line:12] WARNING This is warning message
 
日志格式

level: 设置日志级别,默认为logging.WARNINGpython

filename: 指定日志文件名。安全

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

format: 指定输出的格式和内容,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           字符串形式的当前时间。默认格式是 “2017-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d           线程ID
%(threadName)s      线程名
%(process)d           进程ID
%(message)s          打印 输出的消息
 
datefmt: 指定时间格式,同time.strftime()
stream: 指定将日志的输出流,能够指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
logging.getLogger([name]):建立一个日志对象:
 
返回一个logger实例,若是没有指定name,返回root logger。只要name相同,返回的logger实例都是同一个并且只有一个,即name和logger实例是一一对应的。这意味着,无需把logger实例在各个模块中传递。只要知道name,就能获得同一个logger实例。
logging.getLogger(__name__) 在上述实例中__name__就指的是__main__。
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">函数

相关文章
相关标签/搜索