logging多进程报错:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问

logging多进程报错:PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问
问题重现
2019-12-23 13:28:24,415 - INFO: 正在进行D:\Anaconda_program\hangtian_spider\hangkong/data/EI/01.txt文件<RECORD 216>记录的读取
--- Logging error ---
Traceback (most recent call last):
  File "D:\Anaconda3\lib\logging\handlers.py", line 72, in emit
    self.doRollover()
  File "D:\Anaconda3\lib\logging\handlers.py", line 173, in doRollover
    self.rotate(self.baseFilename, dfn)
  File "D:\Anaconda3\lib\logging\handlers.py", line 113, in rotate
    os.rename(source, dest)
PermissionError: [WinError 32] 另一个程序正在使用此文件,进程无法访问。: 'D:\\Anaconda_program\\hangtian_spider\\hangkong\\log\\ei_txt_file.log' -> 'D:\\Anaconda_program\\hangtian_spider\\hangkong\\log\\ei_txt_file.log.1'
Call stack:
  File "D:\Anaconda3\lib\threading.py", line 884, in _bootstrap
    self._bootstrap_inner()
  File "D:\Anaconda3\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "D:\Anaconda3\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "D:\Anaconda_program\hangtian_spider\hangkong\web\app\data\EI_Data.py", line 228, in get_ei_txt_file
    read_txt(root_dir+file)
  File "D:\Anaconda_program\hangtian_spider\hangkong\web\app\data\EI_Data.py", line 260, in read_txt
    ei_data.add_ei_data(re_dict)
  File "D:\Anaconda_program\hangtian_spider\hangkong\web\app\data\EI_Data.py", line 126, in add_ei_data
    logger.info("本条记录中筛选的关键字段有:record_dict.keys(): {}".format(', '.join(record_dict.keys())))
Message: '本条记录中筛选的关键字段有:record_dict.keys(): ei_an, ei_ti, ei_au, ei_af, ei_ca, ei_st, ei_ast, ei_vl, ei_is, ei_isd, ei_py, ei_pg, ei_la, ei_sn, ei_cn, ei_dt, ei_pu, ei_ab, ei_nr, ei_mh, ei_ctt, ei_uctt, ei_cfc, ei_di, ei_db, ei_cit'
Arguments: ()
2019-12-23 13:28:24,467 - INFO: 本条记录中筛选的关键字段有:record_dict.keys(): ei_an, ei_ti, ei_au, ei_af, ei_ca, ei_st, ei_ast, ei_vl, ei_is, ei_isd, ei_py, ei_pg, ei_la, ei_sn, ei_cn, ei_dt, ei_pu, ei_ab, ei_nr, ei_mh, ei_ctt, ei_uctt, ei_cfc, ei_di, ei_db, ei_cit
--- Logging error ---
解决办法
from logging import getLogger, INFO
from concurrent_log_handler import ConcurrentRotatingFileHandler
import os

log = getLogger()
# Use an absolute path to prevent file rotation trouble.
logfile = os.path.abspath("mylogfile.log")
# Rotate log after reaching 512K, keep 5 old copies.
rotateHandler = ConcurrentRotatingFileHandler(logfile, "a", 512*1024, 5)
log.addHandler(rotateHandler)
log.setLevel(INFO)

log.info("Here is a very exciting log message, just for you")
参考

https://github.com/Preston-Landers/concurrent-log-handler
https://blog.csdn.net/chongtong/article/details/80831782

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值