您的位置:首页 > 编程语言 > Python开发

python 日志模块

2017-04-05 10:15 169 查看
为什么使用日志?... 或者用打印(Print)?日志的两个目的:1.诊断日志: 记录与应用程序操作相关的日志。例如,用户遇到的报错信息,可通过搜索诊断日志获得上下文信息。2.审计日志: 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息,并结合其他用户资料构成用户报告或者用来优化商业目标。打印(Print)?大多数情况下日志总能优于打印,日志的好处:1.日志事件产生的日志记录 ,包含清晰可用的诊断信息,如文件名称、路径、函数名和行数等。2.可通过logging.Logger.setLevel 方法进行有选择的日志记录,或可通过设置 logging.Logger.disabled 属性为 True 来屏蔽日志记录。Logging模块主要包含四个组件:1.Logger 记录器,提供了应用程序代码能直接使用的接口。2.Handler 处理器,将(记录器产生的)日志记录发送至合适的目的地。3.Filter 过滤器,对日志信息进行过滤4.Formatter 格式化器,指明了最终输出中日志记录的格式。日志级别   级别 何时使用DEBUG 1详细信息,方便调试问题。INFO 2证明事情按预期工作。WARNING 3表明发生了一些小意外,但不影响运行ERROR 4由于更严重的问题,软件已不能执行一些功能了。CRITICAL 5严重错误,表明软件已不能继续运行了。Tutor:1. 使用源码配置logLOG = logging.getLogger(‘mylog’)LOG.setLevel(logging.INFO)LOG_FORMAT = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')# 输出到文件fh = logging.FileHandler(sys.argv[0]+'.log')fh.setLevel(logging.INFO)fh.setFormatter(LOG_FORMAT)LOG.addHandler(fh)# 再创建一个handler,用于输出到控制台ch = logging.StreamHandler()ch.setLevel(logging.DEBUG)ch.setFormatter(LOG_FORMAT)LOG.addHandler(ch)2.使用字典配置loglogging_config = dict(version = 1,formatters = {'f': {'format':'%(asctime)s %(name)-12s %(levelname)-8s %(message)s'}},handlers = {'h': {'class': 'logging.StreamHandler','formatter': 'f','level': logging.DEBUG}},loggers = {'root': {'handlers': ['h'],'level': logging.DEBUG}})dictConfig(logging_config)logger = logging.getLogger()logger.debug('debug messages')Logger记录器:使用Logger之前必须先创建Logger实例,方法:logger = logging.getLogger(logger_name)创建Logger实例后,可以进行日志级别设置、增加处理器Handler方法:logger.setLevel(logging.ERROR)logger.addHandler(handler_name)Handler 处理器:Handler类型有很多种,比较常用的有三个:StreamHandler,FileHandler,NullHandler,创建StreamHandler之后,可以通过使用以下方法设置日志级别,设置格式化器Formatter,增加或删除过滤器Filter。ch.setLevel(logging.WARN) # 指定日志级别,低于WARN级别的日志将被忽略ch.setFormatter(formatter_name) # 设置一个格式化器formatterch.addFilter(filter_name) # 增加一个过滤器,可以增加多个ch.removeFilter(filter_name) # 删除一个过滤器StreamHandler创建方法:sh = logging.StreamHandler(stream=None)FileHandler创建方法:fh = logging.FileHandler(filename, mode='a', encoding=None, delay=False)
Formatter 格式化器:使用Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S。创建方法: formatter = logging.Formatter(fmt=None, datefmt=None)其中,fmt是消息的格式化字符串,datefmt是日期字符串。如果不指明fmt,将使用'%(message)s'。有用的format格式格式		描述%(levelno)s	打印日志级别的数值%(levelname)s	打印日志级别名称%(pathname)s	打印当前执行程序的路径%(filename)s	打印当前执行程序名称%(funcName)s	打印日志的当前函数%(lineno)d	打印日志的当前行号%(asctime)s	打印日志的时间%(thread)d	打印线程id%(threadName)s	打印线程名称%(process)d	打印进程ID%(message)s	打印日志信息Filter 过滤器:Handlers和Loggers可以使用Filters来完成更复杂的过滤(暂时不太了解)
                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: