Python的logging,记录log的包

最近在做自动化测试时,想给他加上日志,所以用到logging的模块,以下是python增加log的几种方式

一、python代码配置方式(当然还有一种是可以多模块通用的一个python代码设置,这个网上有很多例子,就不在这里赘述了)

import logging
import logging.handlers

#LOG_FILE 是要输出的日志的文件地址
LOG_FILE=r"C:\Users\min.sun\Desktop\自动化测试\log.txt"
handler = logging.handlers.RotatingFileHandler(LOG_FILE, maxBytes = 1024*1024, backupCount = 5)
fmt = "%(asctime)s - %(filename)s:%(lineno)s - %(name)s - %(message)s"
formatter = logging.Formatter(fmt)
handler.setFormatter(formatter)
logger = logging.getLogger(‘tst‘)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.info(‘first info message‘)
logger.debug(‘first debug message‘)
try:
    1/0
except Exception as e:
    logger.debug(e)
    print(e)

说明:log里可以包含变量,用法如下,是将name变量中的内容替换到%s上。不仅是info,其他级别的也是这么用

logger.info("这是一个变量 %s ",name)



二、使用配置文件

使用配置文件可以更灵活,更方便,下面是配置文件的一些使用方法

配置文件:

[loggers]keys=root,example01,example02,performtest

[logger_root]level=DEBUGhandlers=hand01,hand02

[logger_example01]handlers=hand03qualname=example01propagate=0

[logger_example02]handlers=hand01,hand03qualname=example02propagate=0

[logger_performtest]handlers=hand03qualname=performtestpropagate=0###############################################[formatters]keys=form01,form02

[formatter_form01]format=%(asctime)s  - [%(filename)s:%(lineno)s] - %(levelname)s - %(message)sdatefmt=

[formatter_form02]format=%(name)-12s: %(levelname)-8s %(message)sdatefmt=%a, %d %b %Y %H:%M:%S

###############################################

[handlers]keys=hand01,hand02,hand03

[handler_hand01]class=StreamHandlerlevel=INFOformatter=form02args=(sys.stderr,)

[handler_hand02]class=FileHandlerlevel=DEBUGformatter=form01
#要存储log的文件地址args=(r"C:\Users\min.sun\Desktop\testlog.txt", ‘a‘)

[handler_hand03]class=handlers.RotatingFileHandlerlevel=INFOformatter=form01args=(r"C:\Users\min.sun\Desktop\testlog.txt", ‘a‘,10*1024*1024, 5)
(说明:重点注意一下handler中的class,logging提供了多种Handler,不同的代表了不同的日志存储方式,具体内容可以见我下图给出的参考)
 
模块中调用的方法:
import loggingimport logging.configlogging.config.fileConfig(r"C:\Users\min.sun\Desktop\autotest\com\log.conf")logger = logging.getLogger("example01")

logger.debug("debug message")logger.info("info message")  logger.warn("warn message")  logger.error("error message")  logger.critical("critical message"


说明:在用logging的过程中遇到了编码的问题,一个是配置文件中的存储log的文件路径中包含中文,但是执行时提示GBK的不能读取;一个是存储的log包含中文,结果存储到日志文件中后乱码。
解决方法:将log文件更改编码为UTF8无BOM格式编码。配置文件也更改为这个格式(但是有时候可以,有时候不可以,所以这个需要进一步的了解)

参考文章:http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html
时间: 2024-10-10 06:10:41

Python的logging,记录log的包的相关文章

【python】logging记录traceback

import logging try: do-something-block except: logging.exception("Exception Logged")

[ Python入门教程 ] Python中日志记录模块logging使用实例

python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到屏幕. import logging logging.critical("critical log") logging.error("error log") logging.warning("warning log") logging.info(&q

Python知识点记录二(包和模块)

包和模块 1.Python项目的组织结构 Python最顶级的层级是包,模块即是包下的各个python文件.从组织的层面考虑,模块应该为各种功能"类". 2.包和文件夹的不同 *包在形式上就是一个文件夹,但作为包,包内必须含有一个"__init__.py"模块,同时这个"__init__.py"在Python解释器运行时其名字就是包名. *当一个包被导入,或者该包内的某个模块,或者该包下某个模块内的变量/函数被导入的时候,包内的__init__模

python之logging模块1

4.日志格式说明 logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息,如上例所示: %(levelno)s: 打印日志级别的数值%(levelname)s: 打印日志级别名称%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]%(filename)s: 打印当前执行程序名%(funcName)s: 打印日志的当前函数%(lineno)d: 打印日志的当前行号%(asctime)s: 打印日志的时间%(th

python之logging模块使用

#!/usr/bin/env python # encoding: utf-8 import logging #定义handler的输出格式 formatter=logging.Formatter('%(asctime)s--%(name)s--%(filename)s--%(message)s') #创建一个handler,用于写入日志文件,只输出debug级别以上的日志 fh=logging.FileHandler('test.log') fh.setFormatter(formatter)

Python基础----import模块导入和包的调用

模块概念 在Python中,一个.py文件就称之为一个模块(Module).使用模块组织代码,最大的好处是大大提高了代码的可维护性 模块一共三种:python标准库.第三方模块.应用程序自定义模块. 相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突.但是也要注意,尽量不要与内置函数名字冲突. 模块导入 import语句 1 import module1[, module2[,... moduleN] 使用import语句时候,Python

python的logging日志模块(二)

晚上比较懒,直接搬砖了. 1.简单的将日志打印到屏幕 import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') 屏幕上打印:WARNING:root:This is warning message 默认情况下,logging将日志打印到屏幕,日志级别为WARNING: 日志级别大小关系为:

python之logging模块的使用

python的logging模块是用来写日志的,是python的标准模块. logging的结构 查看logging的python源码,可知主要有四个类实现功能: Loggers:提供应用程序直接使用的接口,如相关的配置设置: Handlers:将Loggers产生的日志传到指定位置,设置日志保存的位置: Filters:对输出日志进行过滤操作: Formatters:控制日志的输出格式: 日志记录的级别 DEBUG:优先级10,记录调试的详细信息,只在调试时开启: INFO:优先级20,记录普

Python基础-----logging模块

#!/usr/bin/env python#-*- coding:utf-8 -*- ########################################################################################################################################################灵活配置日志级别,日志格式,输出位置#####################################