#!/usr/bin/env python # -*- coding: utf-8 -*- ''' 日志级别: DEBUG 打印出详细的日志信息,包括调试信息 INFO 记录普通日志信息,不包括调试信息 WARNING 警告信息:发生了预期之外的变故,但不影响程序的运行 ERROR 错误信息:产生了一些错误,可能会影响程序某些功能的运行 CRITICAL 严重错误:程序本身出错,可能会影响整个程序的运行 日志配置中,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 用户输出的消息 ''' import logging ''' #警告 #logging.warning('user [alex] attempt wrong password more than 3 times') #严重 #logging.critical('server is down') #要将日志写入日志文件,需要指定日志文件名和日志级别 logging.basicConfig(filename='test.log', #日志配置:指定日志文件为test.log level=logging.INFO, #日志级别为INFO及其以上的日志写入日志文件 format='%(asctime)s %(message)s', #对写入日志进行格式化 datefmt='%m%d%Y %I:%M:%S %p',) #对日期输出进行格式化 logging.debug('this is debug') #DEBUG级别比INFO低,不写入日志文件 logging.info('this is info') #INFO及其以上的的级别可以写入日志文件 logging.warning('this is warning') logging.error('this is error') logging.critical('this is critical') ''' ''' #同时把日志同时输出到日志文件和控制台 logging模块级函数 Logger:代码直接使用的:logging.debug、logging.info等都属于Logger Handlers:发送日志到目的地(日志文件、控制台等) Filter:日志过滤:不同日志输出到不同地方(日志文件、控制台)-----用的不多 Formatter:日志信息的格式化输出 ''' #Logger logger = logging.getLogger('TEST-LOG') #创建一个Logger对象(通过该对象操作Logger),参数是name(指定发送日志对象的名称,默认是root) logger.setLevel(logging.DEBUG) #设定一个全局的日志级别 #Formatter formatter = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s") #定义日志输出格式:时间-发送日志对象-日志级别-日志信息 #consle handler ch = logging.StreamHandler() #将日志信息输出到控制台 ch.setLevel(logging.DEBUG) #设置日志输出级别(只针对输出到控制台的日志生效) ch.setFormatter(formatter) #设置日志输出格式(只针对输出到控制台的日志生效) #logfile handler fh = logging.FileHandler("access.log") #将日志信息输出到日志文件,参数是指定的日志文件名 fh.setLevel(logging.WARNING) #设置日志输出级别(只针对输出到日志文件的日志生效) fh.setFormatter(formatter) #设置日志输出格式(只针对输出到日志文件的日志生效) #将自定义的Handlers告诉logger,由logger来执行 logger.addHandler(ch) logger.addHandler(fh) #日志流程:logger按照设定的日志级别获取日志----logger调用handler来处理日志----不同handler根据自己的设置(输出位置、日志级别)对logger的日志进行二次处理 logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message')
关注我的公众号,不定期推送资讯
本文来自博客园,作者:链条君,转载请注明原文链接:https://www.cnblogs.com/MacoLee/articles/6030005.html