日志代码:
#coding:utf-8
import socket
import logging
import getcwd
import os
import time
from logging.handlers import RotatingFileHandler
def get_log(logger_name):
# 创建ogger输出日志对象
logger = logging.getLogger(logger_name)
# 设置最低日志级别:分别低到高有debug、info、warning、error以及critical
logger.setLevel(level=logging.INFO)
# 设置日志存放路径,日志文件名
# 设置所有日志和错误日志的存放路径
path = getcwd.get_cwd()
hostname = socket.gethostname()
# 所有日志存放路径
all_log_path = os.path.join(path, 'logs/ALL_Logs/')
# 错误日志存放路径
error_log_path = os.path.join(path, 'logs/Error_Logs/')
# 设置日志文件名
ctime = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
all_log_name = all_log_path + ctime +str(hostname)+'_'+str(os.getpid())+ '.log'
error_log_name = error_log_path + ctime +str(hostname)+'_'+str(os.getpid())+ '.log'
# 所有日志::定义一个RotaingFileHandler,最多备份3个日志文件,每个日志文件最多1k
all_handler = RotatingFileHandler(all_log_name, maxBytes=10 * 1024, backupCount=10)
# 指定被处理的信息级别,低于设置级别的信息将被忽略
all_handler.setLevel(logging.INFO)
# 错误日志::定义一个RotaingFileHandler,最多备份3个日志文件,每个日志文件最多1k。#另一种常用设置的级别日志放在指定文件里面#handler=logging.FileHandler("testlog1.txt")
error_handler = RotatingFileHandler(error_log_name, maxBytes=10 * 1024, backupCount=10)
# 指定被处理的信息级别,低于设置级别的信息将被忽略
error_handler.setLevel(logging.INFO)
# 创建一个handler输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# 设置输出日志格式
# 以时间-日志器名称-日志级别-日志内容的形式展示
all_log_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 以时间-日志器名称-日志级别-文件名-函数行号-错误内容
error_log_formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(module)s - %(lineno)s - %(message)s')
# 给handler添加输出的日志格式
all_handler.setFormatter(all_log_formatter)
error_handler.setFormatter(error_log_formatter)
console_handler.setFormatter(all_log_formatter)
# 给logger添加handler
logger.addHandler(all_handler)
logger.addHandler(error_handler)
logger.addHandler(console_handler)
return logger
错误信息:
--- Logging error ---
Traceback (most recent call last):
File "D:\Python 3.5\lib\logging\handlers.py", line 72, in emit
self.doRollover()
File "D:\Python 3.5\lib\logging\handlers.py", line 173, in doRollover
self.rotate(self.baseFilename, dfn)
File "D:\Python 3.5\lib\logging\handlers.py", line 113, in rotate
os.rename(source, dest)
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'E:\\Code\\test_rigang02\\logs\\Error_Logs\\2020-07-30_17_10_07LAPTOP-IQDCKA78_15524.log' -> 'E:\\Code\\test_rigang02\\logs\\Error_Logs\\2020-07-30_17_10_07LAPTOP-IQDCKA78_15524.log.1'
Call stack:
File "E:/Code/test_rigang02/main/monitor_add_test.py", line 61, in <module>
run.go_on_run()
File "E:/Code/test_rigang02/main/monitor_add_test.py", line 29, in go_on_run
request_data = json.dumps(self.data.get_data_for_json(i))
File "E:\Code\test_rigang02\data\get_data.py", line 71, in get_data_for_json
request_data = opera_json.get_data(self.get_request_data(row))
File "E:\Code\test_rigang02\data\get_data.py", line 61, in get_request_data
data = self.opera_excel.get_cell_value(row, col)
File "E:\Code\test_rigang02\util\operation_excel.py", line 34, in get_cell_value
self.log_msg.info('获取sheet的单元格内容是:%s' % self.data.cell_value(row,col))
Message: '获取sheet的单元格内容是:test1'
Arguments: ()
2020-07-30 17:10:07,569 - E:\Code\test_rigang02/util/operation_excel.py - INFO - 获取sheet的单元格内容是:test1
--- Logging error ---
Traceback (most recent call last):
File "D:\Python 3.5\lib\logging\handlers.py", line 72, in emit
self.doRollover()
File "D:\Python 3.5\lib\logging\handlers.py", line 173, in doRollover
self.rotate(self.baseFilename, dfn)
File "D:\Python 3.5\lib\logging\handlers.py", line 113, in rotate
os.rename(source, dest)
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'E:\\Code\\test_rigang02\\logs\\Error_Logs\\2020-07-30_17_10_07LAPTOP-IQDCKA78_15524.log' -> 'E:\\Code\\test_rigang02\\logs\\Error_Logs\\2020-07-30_17_10_07LAPTOP-IQDCKA78_15524.log.1'
Call stack:
File "E:/Code/test_rigang02/main/monitor_add_test.py", line 61, in <module>
run.go_on_run()
File "E:/Code/test_rigang02/main/monitor_add_test.py", line 29, in go_on_run
request_data = json.dumps(self.data.get_data_for_json(i))
File "E:\Code\test_rigang02\data\get_data.py", line 71, in get_data_for_json
request_data = opera_json.get_data(self.get_request_data(row))
File "E:\Code\test_rigang02\data\get_data.py", line 65, in get_request_data
log_msg.info('该条用例请求数据关键字是:%s' % data)
Message: '该条用例请求数据关键字是:test1'