python学习小结——日志使用

主要尝试了日志输出的三种写法,若需要将日志分别输出到不同的端,个人推荐使用配置文件方式(可以根据要求对日志分段,比如不同等级输出到不同的文件或者一天生产一个日志文件等)~~

相关参考的文档:

Python 模块之Logging(四)——常用handlers的使用 

Python之日志处理(logging模块)

logging — Logging facility for Python(官方文档)

'''
Created on 2018年9月24日

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

# 常见的Header
# StreamHandler, 用于向标准输入输出流等输出日志。
# FileHandler,用于向文件输出日志。
# NullHandler,什么也不输出。
# RotatingFileHandler,向文件输出日志,如果文件到达指定大小,创建新文件并继续输出日志。


###方法一,只能输出到控制台或者日志文件
# import logging
# logging.basicConfig(filename='main.log',
#                     #日志格式:分为w和a
#                     #w:写模式,每次会重新写日志,覆盖之前的日志
#                     #a:追加模式,默认为追加模式
#                     filemode='a',
#                     #日志格式
#                     format='%(asctime)s - %(pathname)s[line:%(lineno)d]'+'\n'+' %(levelname)s: %(message)s',
#                     #控制台打印日志级别
#                     level=logging.DEBUG)
# 
# if __name__ == '__main__':
#     logging.debug('hhhhhhhhhhhh')
#     logging.info('aaaaaaaaaa')
#     logging.warning('uuuuuu')


##方法二,可以通过创建多个handler,各自规定输出端,可以同时向日志和控制台输出
# import logging
# #创建一个logger
# logger=logging.getLogger('mylogger')
# logger.setLevel(logging.DEBUG)
# #创建一个handler,用于写入日志文件
# fh=logging.FileHandler('test.log')
# fh.setLevel(logging.DEBUG)
# #创建一个handler,用于输出到控制台
# ch=logging.StreamHandler()
# ch.setLevel(logging.DEBUG)
# #定义handler的输入格式
# formatter=logging.Formatter('%(asctime)s - %(pathname)s[line:%(lineno)d]'+'\n'+' %(levelname)s: %(message)s')
# fh.setFormatter(formatter)
# ch.setFormatter(formatter)
# #给logger添加handler
# logger.addHandler(fh)
# logger.addHandler(ch)
# #记录一条日志
# logger.info('测试')


##方法三,配置文件方式

import logging.config

logging.config.fileConfig("logging.conf")

logger=logging.getLogger()
logger.info("debug message  1111111")

以下为logging.conf文件 

[loggers]
keys=root,mylogger

[handlers]
keys=consoleHandler,fileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=consoleHandler,fileHandler

[logger_mylogger]
level=DEBUG
handlers=consoleHandler,fileHandler
qualname=mylogger
propagate=0

[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)

[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=("../test/main.log","a")

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

 

你可能感兴趣的:(python,logging)