Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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中复制日志文件?_Python_Logging - Fatal编程技术网

如何在python中复制日志文件?

如何在python中复制日志文件?,python,logging,Python,Logging,我想让python中的日志文件与log4j中的日志文件相同, 这意味着只要logger.log文件的大小达到1K,就可以复制此文件并将其命名为logger(1).log,如果logger(1),日志已经存在,创建logger(2).log当然还可以删除logger.log,这样下次运行时它将启动一个干净的日志 这是我的代码,但它仅适用于首次创建记录器文件备份: b = os.path.getsize('logger.log') print b if b >= 1000: shutil.

我想让python中的日志文件与log4j中的日志文件相同, 这意味着只要logger.log文件的大小达到1K,就可以复制此文件并将其命名为logger(1).log,如果logger(1),日志已经存在,创建logger(2).log当然还可以删除logger.log,这样下次运行时它将启动一个干净的日志

这是我的代码,但它仅适用于首次创建记录器文件备份:

b = os.path.getsize('logger.log')
print b
if b >= 1000:
  shutil.copy2('logger.log', 'logger(1).log')
这是我的log.py文件,因此可以全局使用:

import os
import logging
from logging.config import fileConfig
from logging import handlers


def setup_custom_logger():
    configFolder = os.getcwd() + os.sep + 'Conf'
    fileConfig(configFolder + os.sep + 'logging_config.ini')
    logger = logging.getLogger()
    # create a file handler
    handler = logging.handlers.RotatingFileHandler('logger.log', maxBytes=1024, encoding="UTF-8")
    handler.doRollover()
    # create a logging format
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    return logger
您需要设置一个:

从文件中:

您可以使用maxBytes和backupCount值来允许文件 以预定的大小翻转。当尺寸即将变大时 超过该值时,将关闭该文件,并以静默方式打开一个新文件 输出。每当当前日志文件几乎被删除时,就会发生翻滚 最大字节长度

您需要设置一个:

从文件中:

您可以使用maxBytes和backupCount值来允许文件 以预定的大小翻转。当尺寸即将变大时 超过该值时,将关闭该文件,并以静默方式打开一个新文件 输出。每当当前日志文件几乎被删除时,就会发生翻滚 最大字节长度


尝试将python日志记录模块与处理程序一起使用。

尝试将python日志记录模块与处理程序一起使用。

您可以使用

可以通过如下操作添加这样的处理程序:

import logging
logger = logging.getLogger(__name__)
logger.addHandler(RotatingFileHandler(filename, maxBytes=1024, backupCount=10))
日志文件达到此大小后,将进行滚动,并使用名称
filename.log.1
filename.log.2
等保存旧日志文件,直到
filename.log.10

您可以使用

可以通过如下操作添加这样的处理程序:

import logging
logger = logging.getLogger(__name__)
logger.addHandler(RotatingFileHandler(filename, maxBytes=1024, backupCount=10))

日志文件达到此大小后,将进行滚动,并使用名称
filename.log.1
filename.log.2
等保存旧日志文件,直到
filename.log.10

我正在全局使用此日志,因此我创建了一个名为log.py的模块。我试图添加您建议的内容,但似乎没有影响。我在问题中添加了log.py。我不理解您遇到的困难。您只需要使用RotatingFileHandler来代替FileHandler。这是我做的,但看起来“RotatingFileHandler”类不是日志记录的一部分。handlers模块我做了一个小更改,看看它现在是否适用于您。如果没有,如果您有任何错误,请发布回溯,并报告您正在使用的Python版本。我试过使用Python3.4.3,效果非常好。从日志中导入处理程序后,现在看起来更好了,没有错误,但没有创建新文件。我使用的是Python 2.7.11。我们代码中唯一的区别是:您使用-logger(handler)而我使用-logger.addHandler(handler)我全局使用这个日志,因此,我创建了一个名为log.py的模块,我试图添加您建议的内容,但似乎没有影响。我在问题中添加了log.py。我不理解您遇到的困难。您只需要使用RotatingFileHandler来代替FileHandler。这是我做的,但看起来“RotatingFileHandler”类不是日志记录的一部分。handlers模块我做了一个小更改,看看它现在是否适用于您。如果没有,如果您有任何错误,请发布回溯,并报告您正在使用的Python版本。我试过使用Python3.4.3,效果非常好。从日志中导入处理程序后,现在看起来更好了,没有错误,但没有创建新文件。我使用的是Python2.7.11。代码中唯一的区别是:您使用-logger(handler),我使用-logger.addHandler(handler)