代码之家  ›  专栏  ›  技术社区  ›  reckoner

日志层次结构与根日志?

  •  33
  • reckoner  · 技术社区  · 14 年前

    在我的代码中,我有这样的东西:

    logger = logging.getLogger('debug0.x')
    

    据我所知,这应该 只有 当我以前做过类似的事情时,请回答:

    logging.basicConfig(filename='10Nov2010a.txt',level=logging.DEBUG, name='debug0')
    

    名称 被定义为 调试0 . 但是,我发现如果是的话

    logging.basicConfig(filename='10Nov2010a.txt',level=logging.DEBUG)
    

    没有 关键字,然后 调试0.x 上面定义的记录器会做出反应,并写入日志文件。我想只有在第一个案例中,当伐木工人被命名时,它才会有反应。

    我很困惑。

    2 回复  |  直到 6 年前
        1
  •  77
  •   codeforester    6 年前

    巨蟒 logging

    使用 getLogger() 功能。函数调用 logging.getLogger('debug0.x') x 是一个孩子 debug0 它本身是根记录器的子级。当记录到此记录器时,它将把消息传递给其父记录器,其父记录器将把消息传递给根记录器。您将根日志记录器配置为通过 basicConfig() 函数,所以您的消息将在那里结束。

        2
  •  13
  •   pyfunc    14 年前

    如果您签出代码或文档:

    >>> print logging.basicConfig.__doc__
    
        Do basic configuration for the logging system.
    
        This function does nothing if the root logger already has handlers
        configured. ...............
        A number of optional keyword arguments may be specified, which can alter
        the default behaviour.
    
        filename  Specifies that a FileHandler be created, using the specified
                  filename, rather than a StreamHandler.
        filemode  Specifies the mode to open the file, if filename is specified
                  (if filemode is unspecified, it defaults to 'a').
        format    Use the specified format string for the handler.
        datefmt   Use the specified date/time format.
        level     Set the root logger level to the specified level.
        stream    Use the specified stream to initialize the StreamHandler. Note
                  that this argument is incompatible with 'filename' - if both
                  are present, 'stream' is ignored.
    

    >>> print logging.getLogger.__doc__
    
        Return a logger with the specified name, creating it if necessary.
    
        If no name is specified, return the root logger.