天天看点

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写日志的方式就完成了~·~

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