Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从python使用RotatingFileHandler时无法获取备份日志文件_Python_Python 2.7_Logging - Fatal编程技术网

从python使用RotatingFileHandler时无法获取备份日志文件

从python使用RotatingFileHandler时无法获取备份日志文件,python,python-2.7,logging,Python,Python 2.7,Logging,简介: base.py: import logging from logging.handlers import TimedRotatingFileHandler import os slogFile = os.path.join(os.getcwd(), 'LOGS', 'App_Debug.log') if True != os.path.isdir(os.path.join(os.getcwd(), 'LOGS')): os.mkdir(os.path.join(os.getcw

简介:

base.py:

import logging
from logging.handlers import TimedRotatingFileHandler
import os

slogFile = os.path.join(os.getcwd(), 'LOGS', 'App_Debug.log')
if True != os.path.isdir(os.path.join(os.getcwd(), 'LOGS')):
    os.mkdir(os.path.join(os.getcwd(), 'LOGS'))
logging.basicConfig(filename=slogFile, level=logging.DEBUG)
logging.basicConfig(format='%(asctime)s %(message)s')
logger = logging.getLogger("myApp")   
fmt = logging.Formatter(fmt='%(asctime)s %(message)s')
size=1024*1024*1 #1mb file size
logger = logging.getLogger("myApp")   
fmt = logging.Formatter(fmt='%(asctime)s %(message)s')

hdlr = logging.handlers.RotatingFileHandler(filename = slogFile ,mode='w', maxBytes=size, backupCount=5, encoding=None, delay=0)
hdlr.setFormatter(fmt)
logger.addHandler(hdlr)</em>
import base

base.logger.debug('xxx')
import base

base.logger.debug('xxx')
app\u main2.py:

import logging
from logging.handlers import TimedRotatingFileHandler
import os

slogFile = os.path.join(os.getcwd(), 'LOGS', 'App_Debug.log')
if True != os.path.isdir(os.path.join(os.getcwd(), 'LOGS')):
    os.mkdir(os.path.join(os.getcwd(), 'LOGS'))
logging.basicConfig(filename=slogFile, level=logging.DEBUG)
logging.basicConfig(format='%(asctime)s %(message)s')
logger = logging.getLogger("myApp")   
fmt = logging.Formatter(fmt='%(asctime)s %(message)s')
size=1024*1024*1 #1mb file size
logger = logging.getLogger("myApp")   
fmt = logging.Formatter(fmt='%(asctime)s %(message)s')

hdlr = logging.handlers.RotatingFileHandler(filename = slogFile ,mode='w', maxBytes=size, backupCount=5, encoding=None, delay=0)
hdlr.setFormatter(fmt)
logger.addHandler(hdlr)</em>
import base

base.logger.debug('xxx')
import base

base.logger.debug('xxx')
注意:对于我的应用程序,我使用的另一个模块也将日志记录到同一个文件中

我得到这个错误:

Traceback (most recent call last):

 File "C:\Python27\lib\logging\handlers.py", line 78, in emit

   self.doRollover()

 File "C:\Python27\lib\logging\handlers.py", line 141, in doRollover

  os.rename(self.baseFilename, dfn)

WindowsError: [Error 32] The process cannot access the file because it is being used by another process
从文件app_main1.py第59行记录

你能给我解释一下吗


我想在日志文件达到最大(1mb)大小时备份日志文件。

您可能在其他程序中打开了日志文件,这就是无法重命名日志文件的原因。这可能是您的程序之一,也可能是在磁盘文件上运行的防病毒或全文索引器。

我的猜测是,由于您导入了base.py两次,RotatingFileHandler设置了两次,因此它由两个进程访问

由于这个原因,我今天也遇到了类似的问题。细节


我建议不要导入base.py,而是在app_main1.py和app_main2.py中创建一个子记录器。你可以参考

我在开发flask应用程序时遇到了相同的错误。为了解决这个问题,我不得不将环境变量从
“烧瓶调试=1”
“烧瓶调试=0”
。原因是打开调试会导致线程错误。我读了之后得到了答案

你的问题是什么?关于您的错误或备份日志文件?关于备份日志文件您解决过这个问题吗?我的应用程序中出现了类似的错误。我仍然面临的问题,你解决了吗?是的,另一个模块使用了相同的日志文件,在这种情况下,我如何获取备份日志文件,该文件将根据流进行记录,我的应用程序与另一个模块交互以完成任务