python基础-logging模块

loggging日志

  python的logging模块提供了通用的日志系统.这个模块提供不同的日志级别,并可以采用不同的方式记录日志

  注意:python文件的命名是有讲究的,不要把文件名命名的和模块名字一样,这样会一直报错,比如你这里如果命名为logging.py就会一直报错

logging.basicCongfig函数各参数:

1.filename  指定日志文件名

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

3.format  指定输出的格式和内容,format可以输出很多有用信息:

      %(levelno)s  打印日志级别的数值

      %(levelname)s  打印日志级别名称

      %(pathname)s  打印当前执行程序的路径

      %(filename)s    打印当前执行名

      %(funcName)s    打印日志的当前函数

      %(lineno)d      打印日志的当前行号

      %(lasctime)s      打印日志的时间

      %(thread)d      打印线程ID

      %(threadName)s    打印线程名称

      %(process)d      打印进程ID

      %(message)s      打印日志信息

4.level  设置统一日志处理器的级别,默认为logging.WARNING

日志信息,输出在控制台

import logging
import os

'''
logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置
日志级别等级CRITICAL > ERROR > WARNIG > INFO >DEBUG,
'''

#log_file = os.path.join(os.getcwd(),'wlog.log')
#日志格式信息: 日志时间 当前执行名 当前行号 日志级别名称 打印日志信息
log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s"

'''
level设定本级别以及以上级别的才会打印.这里注意大小写!
如果你不写filename和filemode参数则会默认打印到console
'''
#level:日志级别 (.)后面是大写, format:日志格式
logging.basicConfig(level = logging.WARNING,format = log_format)
#logging.basicConfig(level = logging.WARNING,format = log_format,filename = log_file,filemode = 'w')

#打印日志,
#级别规则
#warning级别,可以打出来CRITICAL > ERROR > WARNIG级别的日志
logging.warning('warning message')
#error级别
logging.error('error message')
logging.debug('debug message')

只在控制台输出,结果:

2017-06-18 23:04:55,444 日志.py [line:26] WARNING: warning message
2017-06-18 23:04:55,444 日志.py [line:28] ERROR: error message

日志信息,输出在指定位置的文件中

import logging
import os

'''
logging.basicConfig:日志的统一处理器,对日志的输出格式和方式做配置
日志级别等级CRITICAL > ERROR > WARNIG > INFO >DEBUG,
'''

#os的拼接,记录文件的路径,os取的当前路径,也可以自己设置位置,wlog.log文件名称
log_file = os.path.join(os.getcwd(),'wlog.log')
print(os.getcwd())
#日志格式信息: 日志时间 当前执行名 当前行号 日志级别名称 打印日志信息
log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s"

'''
level设定本级别以及以上级别的才会打印.这里注意大小写!
如果你不写filename和filemode参数则会默认打印到console
'''
#level:日志级别 (.)后面是大写, format:日志格式
#logging.basicConfig(level = logging.WARNING,format = log_format)
logging.basicConfig(level = logging.WARNING,format = log_format,filename = log_file,filemode = 'w')

#打印日志,
#级别规则
#warning级别,可以打出来CRITICAL > ERROR > WARNIG级别的日志
logging.warning('warning message')
#error级别
logging.error('error message')
logging.debug('debug message')

只在指定位置的输出日志文件,结果:

同时在控制台和指定路径的文件中输出日志信息

import logging
'''实现,让日志信息既在控制台,也在指定路径的文件中输出'''
#日志级别等级 CRITICAL > ERROR > WARNING > INFO > DEBUG

#创建一个logger,顶级的根目录getlogger,有两个分支,一个是FileHander,一个是StreamHandler
logger = logging.getLogger('mylogger')
logger.setLevel(logging.INFO)

#创建一个handler,将log写入文件
fh = logging.FileHandler('D:python workspacewlog_console.log',mode = 'w')
fh.setLevel(logging.INFO)

#再创建一个handler,将log输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.INFO)

#设置输出格式
log_format = "%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s: %(message)s"
#把格式添加进来
formatter = logging.Formatter(log_format)
fh.setFormatter(formatter)
ch.setFormatter(formatter)


#把handler添加到logger里,其实你理解为汇报给大领导即可
logger.addHandler(fh)
logger.addHandler(ch)

logger.error('下雨了')
logger.info('打雷了')
logger.debug('收衣服了')

结果:

控制台输出:

2017-06-19 00:14:01,182 日志2.py [line:32] ERROR: 下雨了
2017-06-19 00:14:01,182 日志2.py [line:33] INFO: 打雷了

文件中输出:

原文地址:https://www.cnblogs.com/R-bear/p/7045994.html