【问题】多个文件写入日志报错

日志代码:

#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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值