码迷,mamicode.com
首页 > 其他好文 > 详细

自动化框架--log日志封装

时间:2017-08-06 14:02:36      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:python   sed   日志   技术分享   rom   txt   日志文件   warning   max   

 

一: 封装log模块, 在自动化测试中日志输出,在配置文件中配置需输出的位置 ,  1为输出, 0不输出。

1,console_output_on = 1 输出到控制台
2,file_output_on =1  输出到txt文件中
configparser 模块可以从配置文件中获取数据

Log.py   

技术分享
 1 import logging
 2 import sys
 3 import configparser
 4 
 5 class Log:
 6     def __init__(self):
 7         pass
 8 
 9     def __new__(cls):
10         if  not hasattr(cls,instance):
11             cls._instance = super(Log, cls).__new__(cls)
12             conf = configparser.ConfigParser()
13             conf.read(log_config.ini,encoding=utf-8)
14             cls._instance.level = conf.get(logging,level)
15             cls._instance.name = conf.get(logging, logger_name)
16             cls._instance.path = conf.get(logging, file_path)
17             cls._instance.formatter = conf.get(logging, formatter)
18             cls._instance.format = cls._instance.formatter.replace(|, %)
19             cls._instance.console_output_on = conf.getint(logging, console_output_on)
20             cls._instance.file_output_on = conf.getint(logging, file_output_on)
21             cls._instance.logger =logging.getLogger(test)
22             cls._instance.log()
23         return cls._instance
24 
25 
26     def get_log(self):
27         return self.logger
28 
29 
30     def log(self):
31         if self.console_output_on == 1:
32             self.logger.setLevel(self.level)
33             # 设置log.txt路径
34             #设置控制台输出日志
35             sh = logging.StreamHandler(sys.stderr)
36             # 设置格式
37             formatter = logging.Formatter(self.format)
38             sh.setFormatter(formatter)
39             self.logger.addHandler(sh)
40 
41         if  self.file_output_on==1:
42             self.logger.setLevel(self.level)
43             # 设置log.txt路径
44             # 设置文件输入日志地址
45             #最多备份5个日志文件,每个日志文件最大10M,这个Handler类似于上面的FileHandler,但是它可以管理文件大小。
46             # 当文件达到一定大小之后,它会自动将当前日志文件改名,然后创建 一个新的同名日志文件继续输出
47             #fh = logging.RotatingFileHandler(self.path,maxBytes=10*1024*1024,backupCount=5)
48             fh = logging.FileHandler(self.path)
49             # 设置格式
50             formatter = logging.Formatter(self.format)
51             fh.setFormatter(formatter)
52             self.logger.addHandler(fh)
53             return self.logger
54 
55 log = Log().get_log()
View Code

二: 配置文件设置 

技术分享
 1 [logging]
 2 level=DEBUG
 3 logger_name=test
 4 file_path=H:\pycharm\untitled2\python_study\log\log.txt
 5 formatter=[|(asctime)s]:|(filename)s  [line:|(lineno)d] |(levelname)s : |(message)s |(funcName)s
 6 console_output_on=1
 7 file_output_on=1
 8 
 9 [level]
10 日志等级: debug, info,warning,error,critical
View Code

三: 测试文件

技术分享
 1 from log.Log import *
 2 import codecs
 3 log.info(this is testing)
 4 
 5 def fun(x,y):
 6     """随意测试"""
 7     return x/y
 8 
 9 try:
10     fun(2,0) >0
11 except Exception as e:
12     log.error(分母不能为0 {}.format(e))
View Code

四:日志输出 log.txt

技术分享

五: 目录

 

技术分享

自动化框架--log日志封装

标签:python   sed   日志   技术分享   rom   txt   日志文件   warning   max   

原文地址:http://www.cnblogs.com/paulXiong/p/7294392.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!