小编Bar*_* P.的帖子

python不会将文件句柄发布到logfile

我有一个应用程序,必须运行一些模拟运行.我想设置一个日志记录机制,其中所有logrecords都记录在general.log中,并且模拟运行的所有日志都转到run00001.log,....为此我定义了一个类Run.在__init__()一个新的文件句柄中添加了runlog.

问题是运行的日志文件永远不会被释放,因此在多次运行后,可用的句柄耗尽并且运行崩溃.

我已经设置了一些例程来测试它,如下所示

主要例程

import Model
try:
    myrun = Model.Run('20130315150340_run_49295')
    ha = raw_input('enter')
    myrun.log.info("some info")
except:
    traceback.print_exc(file=sys.stdout)

ha = raw_input('enter3')
Run Code Online (Sandbox Code Playgroud)

Run类在模块Model中定义如下

import logging
class Run(object):

    """ Implements the functionality of a single run. """
    def __init__(self, runid):
        self.logdir="."
        self.runid          = runid
        self.logFile        = os.path.join(self.logdir , self.runid + '.log')
        self.log            = logging.getLogger('Run'+self.runid)
        myformatter         = logging.Formatter('%(asctime)s %(name)-12s %(levelname)-8s %(message)s')
        myhandler      = logging.FileHandler(self.logFile)
        myhandler.setLevel(logging.INFO)
        myhandler.setFormatter(myformatter)
        self.log.addHandler(myhandler) 
Run Code Online (Sandbox Code Playgroud)

然后我使用程序进程资源管理器来跟踪文件处理程序.我看到runlogs出现了,但从未消失.

有没有办法可以强迫这个?

python logging

32
推荐指数
3
解决办法
3万
查看次数

django获取字符串的第一部分

是否有一个简单的 django 标签来获取模板中字符串的前 x 个字符?

在模型实例列表中,我想根据对象实例的状态为每个对象实例提供不同的符号。状态可以是“等待”、“成功”或“失败 XXXX”,其中 XXXX 是错误代码。

我想检查 objectinstance.status 的前 5 个字符 == 'error',那么符号将为红色。然而,我该怎么做呢?在 Python 中,我可以使用 objectinstance.status[:5]。

使用https://docs.djangoproject.com/en/dev/ref/templates/builtins/我设法通过以下“可怕的”串联来做到这一点,但是有像 .left() 或 .right() 这样简单的东西吗?

{% if run.status|make_list|slice:":5"|join:"" == 'error' %}
Run Code Online (Sandbox Code Playgroud)

python django

3
推荐指数
1
解决办法
3614
查看次数

标签 统计

python ×2

django ×1

logging ×1