wukong-robot 日志模块
Posted 年少当拼搏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wukong-robot 日志模块相关的知识,希望对你有一定的参考价值。
wukong-robot 日志模块
日志文件:
import logging
import os
from robot import constants
from logging.handlers import RotatingFileHandler
PAGE = 4096
DEBUG = logging.DEBUG
INFO = logging.INFO
WARNING = logging.WARNING
ERROR = logging.ERROR
def tail(filepath, n=10):
"""
实现 tail -n
"""
res = ""
with open(filepath, \'rb\') as f:
f_len = f.seek(0, 2)
rem = f_len % PAGE
page_n = f_len // PAGE
r_len = rem if rem else PAGE
while True:
# 如果读取的页大小>=文件大小,直接读取数据输出
if r_len >= f_len:
f.seek(0)
lines = f.readlines()[::-1]
break
f.seek(-r_len, 2)
# print(\'f_len: {}, rem: {}, page_n: {}, r_len: {}\'.format(f_len, rem, page_n, r_len))
lines = f.readlines()[::-1]
count = len(lines) -1 # 末行可能不完整,减一行,加大读取量
if count >= n: # 如果读取到的行数>=指定行数,则退出循环读取数据
break
else: # 如果读取行数不够,载入更多的页大小读取数据
r_len += PAGE
page_n -= 1
for line in lines[:n][::-1]:
res += line.decode(\'utf-8\')
return res
def getLogger(name):
"""
作用同标准模块 logging.getLogger(name)
:returns: logger
"""
formatter = logging.Formatter(\'%(asctime)s - %(name)s - %(filename)s - %(funcName)s - line %(lineno)s - %(levelname)s - %(message)s\')
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
# FileHandler
file_handler = RotatingFileHandler(os.path.join(constants.TEMP_PATH, \'wukong.log\'), maxBytes=1024*1024,backupCount=5)
file_handler.setLevel(level=logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
return logger
def readLog(lines=200):
"""
获取最新的指定行数的 log
:param lines: 最大的行数
:returns: 最新指定行数的 log
"""
log_path = os.path.join(constants.TEMP_PATH, \'wukong.log\')
if os.path.exists(log_path):
return tail(log_path, lines)
return \'\'
日志文件中包含三个函数:tail、getLogger和readLog
这里主要说明一下getLogger.
getLogger:在其他每一个每一个文件中调用,这个函数将配置该文件中的logger模块。这里配置输出格式、文件输出和终端输出。这样每一个文件都会实例化log模块
回显
try:
open(\'/path/to/does/not/exist\', \'rb\')
except (SystemExit, KeyboardInterrupt):
raise
except Exception, e:
logger.error(\'Failed to open file\', exc_info=True)
exc_info这个置位TRUE,则在异常时会将内容输出文件和终端上,如果置为FALSE,则不会
这里记录一下,好的日志模块的https://github.com/ydf0509/nb_log 路径
以上是关于wukong-robot 日志模块的主要内容,如果未能解决你的问题,请参考以下文章
如何使用模块化代码片段中的LeakCanary检测内存泄漏?
我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情
CTS测试CtsWindowManagerDeviceTestCases模块的testShowWhenLockedImeActivityAndShowSoftInput测试fail项解决方法(代码片段