日志写入是我们日常工作中常用到的功能,我们可以直接使用写文件的方式来以自己的方式写日志,另外,当我们在一个比较大的项目中,涉及到日志写入时,一般会使用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写日志的方式就完成了~·~
欢迎关注“搜狗测试”公众号,每天一篇测试相关的文章与您分享,共同讨论软件测试的技术与发展