如何获取Python日志记录模块当前正在登录的文件?

Bia*_*cki 10 python logging

有没有办法做到这一点?如果logging.config.fileConfig('some.log')是二传手,那么吸气鬼是什么?只是好奇这是否存在.

小智 9

我需要在一个非常简单的日志记录环境中做类似的事情,以下例程就可以了

def _find_logger_basefilename(self, logger):
    """Finds the logger base filename(s) currently there is only one
    """
    log_file = None
    parent = logger.__dict__['parent']
    if parent.__class__.__name__ == 'RootLogger':
        # this is where the file name lives
        for h in logger.__dict__['handlers']:
            if h.__class__.__name__ == 'TimedRotatingFileHandler':
                log_file = h.baseFilename
    else:
        log_file = self._find_logger_basefilename(parent)

    return log_file    
Run Code Online (Sandbox Code Playgroud)

我在寻找TimedRotatingFileHandler使用的文件,您可能需要更改搜索的处理程序类型,可能是FileHandler.

不知道它会在任何类型的复杂日志环境中发生.


Tar*_*ran 9

对于我单个文件日志的基本用法,这很有效

logging.getLoggerClass().root.handlers[0].baseFilename
Run Code Online (Sandbox Code Playgroud)


Nav*_*een 8

下面是单文件处理程序的简单逻辑:

>>> import logging
>>> logger = logging.getLogger("test")
>>> handler = logging.FileHandler("testlog.log")
>>> logger.addHandler(handler)
>>> print logger.handlers[0].baseFilename
/home/nav/testlog.log
>>>
Run Code Online (Sandbox Code Playgroud)


bst*_*rre 5

logging.config.fileConfig('some.log')将尝试从some.log 读取日志记录配置.

我不相信有一种通用的方法来检索目标文件 - 它并不总是保证甚至可以转到文件.(它可能会通过网络等进入系统日志)