python自动化测试脚本运行后,想要将日志保存到某个特定文件,使用python的logging模块实现

参考代码:

import logging

def initLogging(logFilename,e):

  logging.basicConfig(
level = logging.INFO,
format ='%(asctime)s-%(levelname)s-%(message)s',
datefmt = '%y-%m-%d %H:%M',
filename = logFilename,
filemode = 'a') filehandler = logging.FileHandler(logFilename,encoding='utf-8')
logging.getLogger().addHandler(filehandler )
log = logging.exception(e)
return log

1.日志级别使用场景:
在终端输出程序或脚本的使用方法:print
报告一个事件的发生(例如状态的修改):logging.info()或logging.debug()
发生了一个特定的警告性的事件:logging.warn()
发生了一个特定的错误性的事件:raise
发生了一个特定的错误性的事件,但是又不想因为此错误导致程序退出(例如程序是一个守护进程):logging.error(),logging.exception(),logging.critical()

2.logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有:
level:设置日志级别
format:指定handler使用的日志显示格式
datefmt:指定日期时间格式,如果format参数中存在asctime,则需要指定时间格式
filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”

3.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用户输出的消息

4.logging模块的了解,必须知道:Logger,Handler,Formatter,Filter
(1)logger 提供了应用程序可以直接使用的接口
每个程序在输出信息之前都要获得一个Logger
Logger.addHandler(hdlr)、Logger.removeHandler(hdlr):增加或删除指定的handler

(2)handler 将(logger创建的)日志记录发送到合适的目的输出
logging.FileHandler用于向一个文件输出日志信息,不过FileHandler会帮你打开这个文件。它的构造函数是:
FileHandler(filename[,mode])filename是文件名,必须指定一个文件名;mode是文件的打开方式

(3)filter 提供了细度设备来决定输出哪条日志记录

(4)formatter 决定日志记录的最终输出格式

5.输出日志结果:

18-06-12 17:34-ERROR-string indices must be integers
Traceback (most recent call last):
File "C:/Users/xx/Documents/GitHub/python3/main/run_test.py", line 70, in go_on_run
op_header.write_cookie()
File "C:\Users\xx\Documents\GitHub\python3\util\operation_header.py", line 30, in write_cookie
cookie = requests.utils.dict_from_cookiejar(self.get_cookie())
File "C:\Users\xx\Documents\GitHub\python3\util\operation_header.py", line 25, in get_cookie
url = self.get_response_url()+"&callback=jQuery21008240514814031887_1508666806688&_=1508666806689"
File "C:\Users\xx\Documents\GitHub\python3\util\operation_header.py", line 18, in get_response_url
url = self.response['data']['url'][0]
TypeError: string indices must be integers

参考文档:

https://www.cnblogs.com/Xjng/p/8a481db3399827ecbdec888989f7c0d5.html

https://www.cnblogs.com/wenwei-blog/p/7196658.html

python3:logging模块 输出日志到文件的更多相关文章

  1. 通过python的logging模块输出日志文件

    import logging import sys #获取logger实例 logger = logging.getLogger("baseSpider") # 括号后面填运行的文 ...

  2. Python Logging模块 输出日志颜色、过期清理和日志滚动备份

    # coding:utf-8 import logging from logging.handlers import RotatingFileHandler # 按文件大小滚动备份 import co ...

  3. Spring按业务模块输出日志到不同的文件

    一.背景 在我们开发的过程中,可能存在如下情况: 1.有些时候我们需要调用第三方的接口,一般情况下,调用接口,我们都会记录请求的入参和响应的.如果我们自己系统的日志和第三方的日志混合到一个日志文件中, ...

  4. Python3 logging 模块

    Python3 logging模块 日志模块: 用于便捷记录日志且线程安全的模块 CRITICAL = 50 FATAL = CRITICAL ERROR = 40 WARNING = 30 WARN ...

  5. logging模块及日志框架

    logging模块及日志框架 logging模块 一.导入方式 import logging 二.作用 写日志 三.模块功能 3.1 经常使用 # V1 import logging logging ...

  6. 3-log4j2之输出日志到文件

    一.添加maven依赖 <dependencies> <dependency> <groupId>org.apache.logging.log4j</grou ...

  7. Python3 logging模块&ConfigParser模块

    ''' 博客园 Infi_chu ''' ''' logging模块 该模块是关于日志相关操作的模块 ''' import logging # logging.debug('debug') # log ...

  8. python 学习笔记 -logging模块(日志)

    模块级函数 logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root loggerlogging.debug().logging.info().lo ...

  9. python3 logging模块

    很多程序都有记录日志的需求,并且日志包含的信息有正常的程序访问日志还可能有错误,警告等信息输出,python的logging模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志级别等级:cri ...

随机推荐

  1. 关于export和export default的区别

    ES6的模块化中,export与export default都可以用于导出常量.函数.文件.模块等,我们可以通过在其它文件或模块中import(常量.函数.文件.模块)的方式导入,但在一个文件或模块中 ...

  2. python-django rest framework框架之路由

    路由 第一类:原始继承APIView # http://127.0.0.1:8000/api/v1/auth/ url(r'^auth/$', views.AuthView.as_view()), # ...

  3. Nodejs--url模块

    由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. url 模块中的 parse 函数可以用于解析url中的参数. url ...

  4. 【LeetCode】数独

    判断一个数独是否合法,未填的空格用字符 ' . ' 表示.该数独有解并不是必要的. e.g. 如图合法数独,输入 ["53..7....","6..195..." ...

  5. 二十一、MVC的WEB框架(Spring MVC)

    一.基于注解方式配置 1.首先是修改IndexContoller控制器类 1.1.在类前面加上@Controller:表示这个类是一个控制器 1.2.在方法handleRequest前面加上@Requ ...

  6. spring-mvc实现模拟数据到网页展示过程代码

    spring-mvc实现模拟数据到网页展示过程代码 先看看我们的3种模拟数据到网页展示的思路图: 1.当mybatis的环境配置完成.一个动态Web项目建立好.开始导入jar包. -spring的ao ...

  7. openssl安装/更新教程(CentOS)

    1.下载openssl 下载链接:https://www.openssl.org/source/snapshot/ 里边是当前仍支持版本的快照:同版本不同日期内容可能不同的,所以下载一般下对应版本的最 ...

  8. 微信小程序开发工具 POST net::ERR_PROXY_CONNECTION_FAILED 代理问题

    几天不动代码,再运行成这样了, {errMsg: "getLocation:fail Error: tunneling socket could not…d, cause=connect E ...

  9. win7 忘记密码

    你可以找个PE来修改密码,用光盘或U盘做PE都行,现在很多PE都支持密码修改的!不过下面这个方法还是要用到PE:1. 进入pe2.进入c:\windows\system32下 更改magnify.ex ...

  10. IIS发布网站,访问时出现无法识别的属性“targetFramework”错误

    今天在IIS发布网站后,访问时出现无识别的属性“targetFramework”错误 错误描述: 错误原因: 是由IIS配置该站点的.NET Framework 版本与程序中的.NET Framewo ...