Python写自动化之logging日志写入

日志写入是我们日常工作中常用到的功能,我们可以直接使用写文件的方式来以自己的方式写日志,另外,当我们在一个比较大的项目中,涉及到日志写入时,一般会使用logging模块来进行日志的写入,第一步,先写一个单例,创建一个logger对象:

def _instance():
    global logger
    if logger is None:
        logging.config.fileConfig(os.path.join(util.get_current(), "logger.conf"))
        logger = logging.getLogger("root")
    return logger

接下来,我们就可以使用logger对象进行不同级别日志的写入了,看下代码:

def info(msg):
    _instance().info(msg)

def warning(msg):
    _instance().warning(msg)

def debug(msg):
    _instance().debug(msg)

def error(msg):
    _instance().error(msg)

def exception(msg):
    _instance().exception(msg)

def critical(msg):
    _instance().critical(msg)

So Easy,你应该已经发现了,在我们新建logger对象时,使用到了一个conf文件,再来看下conf的写法吧

#logger.conf
###############################################
[loggers]
keys=root

[logger_root]
level = INFO
handlers = consoleHandler, fileHandler

###############################################
[handlers]
keys = consoleHandler, fileHandler

[handler_consoleHandler]
class = StreamHandler
level = DEBUG
formatter = form01
args=(sys.stderr,)

[handler_fileHandler]
class = handlers.RotatingFileHandler
level = WARNING
formatter = form01
args=('myserver.log', 'a', 10 * 1024 * 1024, 5)

###############################################
[formatters]
keys=form01

[formatter_form01]
format=%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s
datefmt=%a, %d %b %Y %H:%M:%S

从上往下,首先配置logger的名称为root,在logger对象获取时有用到这个名字哦;

接着定义root的处理级别及写入方式,日志级别顺序为info debug warning exception error critical,示例中定义了两种写入方式consoleHandler、fileHandler;

handlers下,定义了写入方式详细的类,写入级别,写入信息格式,写入时参数

ok,Python写日志的方式就完成了~·~

欢迎关注“搜狗测试”公众号,每天一篇测试相关的文章与您分享,共同讨论软件测试的技术与发展

时间: 2024-10-12 08:59:45

Python写自动化之logging日志写入的相关文章

Python写自动化之写一个Windows 服务

Python 写windows 服务,需要使用 pywin32包. 直接上代码: #encoding=utf8 ''' Created on 2014-7-1 @author: wangmengnan ''' import os import sys import win32serviceutil import win32service import win32event class PythonService(win32serviceutil.ServiceFramework): #服务名 _

Python写自动化之启动进程并获取进程输出

当我们需要执行外部命令或自己写一个自动化执行器时,需要使用到启动进程并获取输出的操作 首先,我们启动进程采用Python的subprocess模块,为了保证标准输出和标准错误输出能够正常运行,启动两个线程来检测输出结果部分 class Daemon(threading.Thread): def __init__(self, workDir, logFunction=None, *args): threading.Thread.__init__(self) self.process = None

Python写自动化之ini文件的读写

在我们写一些测试工具时,经常会需要使用到配置文件,此时一般选用ini文件是比较合适的 标准并且可以通过参数命名知道参数的含义,那么使用Python如何进行ini文件的读写呢? 首先看下,读取ini文件,我们直接使用Python自带的模块ConfigParser来进行配置文件的读写 看下代码吧 def ReadConfig(configPath): configDict = {} cf = ConfigParser.ConfigParser() cf.read(configPath) sessio

Python写自动化之构造Multipartform-data发请求

在HTTP协议的规范中会将http请求分为三个部分:状态行,请求头,请求体.在发送HTTP请求时,需要在请求头中注明发送的方法,这些方法包括:OPTIONS.GET.HEAD.POST.PUT.DELETE.TRACE.CONNECT.其中GET和POST是最为普遍被使用的.有关POST和GET的区别,知识库中已经有同学进行了表述,这里主要介绍一下multipart/form-data请求具体是怎么一回事. 在普通的HTML Form Post请求中,它会在头信息里使用Content-Lengt

Python写自动化之SVN更新

在远程机器上执行脚本时,为了能够保证脚本的实时性,我们一般会将脚本存放到SVN上,远程机器通过SVN的操作去更新脚本: SVN更新脚本只需要2步就可以实现了,这个地方使用到pysvn库,看下实现 # 初始化client self.client = pysvn.Client() self.client.set_default_username(self.username) self.client.set_default_password(util.decrypt_des(self.password

Python写自动化之注册表的读写操作

Windows上的自动化测试经常会接触到对于注册表的读写操作问题,比如,获取一个程序的安装目录,一般情况下,我们可以去注册表的App Paths下去查找,这时就涉及到了注册表的读取操作,我们使用Python的_winreg模块来实现,代码如下: def reg_query(path, key): try: path = path.replace("/", "\\") rootName = path[:path.find("\\")] subPat

python写的nginx切割日志脚本

#!/usr/bin/env pthon #_*_coding=utf-8_*_ #python版本(nginx日志切割脚本) import os import datetime #access.log路径 accesslogs_path = "/usr/local/nginx/logs/" #昨天的日期 lastDate = datetime.date.today() - datetime.timedelta(days=1) #备份路径 bak_path = "%s%s/%

Python写自动化之获取文件的MD5值

使用Python 获取文件的MD5 值是一件很简单的事情,Python 提供了md5 和 hashlib 两个模块,都可以获取到文件的md5值. 代码如下: #获取文件的MD5值,适用于小文件 def getFileMD5(self,filepath): if self.isFile(filepath): f = open(filepath,'rb') md5obj = hashlib.md5() md5obj.update(f.read()) hash = md5obj.hexdigest()

Python写自动化之图标锁定到任务栏或删除图标

这个功能在windows上测试安装卸载时,有时会用到,网上查到的两种语言的版本如下: C#版: Shell shell = new Shell(); Folder folder = shell.NameSpace(Path.GetDirectoryName(appPath)); FolderItem app = folder.ParseName(Path.GetFileName(appPath)); string sVerb = isLock ? "锁定到任务栏(&K)" :