Python logging 模块详述(2)

def basicConfig(**kwargs):
    _acquireLock()
    try:
        if len(root.handlers) == 0:
            filename = kwargs.get("filename")
            if filename:
                mode = kwargs.get("filemode", 'a')
                hdlr = FileHandler(filename, mode)
            else:
                stream = kwargs.get("stream")
                hdlr = StreamHandler(stream)
            fs = kwargs.get("format", BASIC_FORMAT)
            dfs = kwargs.get("datefmt", None)
            fmt = Formatter(fs, dfs)
            hdlr.setFormatter(fmt)
            root.addHandler(hdlr)
            level = kwargs.get("level")
            if level is not None:
                root.setLevel(level)
    finally:
        _releaseLock()

Logger Objects

Loggers are never instantiated directly,but always through the module-level function logging.getLogger(name).

logger对象不能直接通过Logger类实例,都是通过模块级函数logging.getLogger(name)调用产生的。

Mutiple calls to getLogger() with the same name will always return a refernece to the same Logger object.

Logger的继承关系除了可以继承父级的一些东西如level(getEffectiveLevel())。还可以通过继承关系将LogRecord向上传播。
logger经常使用的方法:

方法用法注释
logger.info()          
logger.debug()          
logger.setLevel          
logger.getEffectiveLevel()          
logger.getChild(suffix)       返回一个子logger,子logger的名字会是父logger名字加上suffix  
logger.addFilter(filt)          
logger.removeFilter(filt)          
logger.addHandler(hd)          
logger.removeHandler(hd)          
Handler

Handler是一个基础类,其它不同类型的handler都是继承于它。同样,handler也不会直接实例化对象,而是使用它的子类。
常用类型Handler

Handler所在模块注释
StreamHandler   logging      
FileHandler   logging      
NullHandler   loggging      
BaseRotatingHandler   logging.handlers      
RotatingFileHandler   logging.handlers      
TimedRotatingFileHandler   logging.handlers      
SocketHandler   logging.handlers      

等等。。。

Handler常用方法:

Handler.addFilter()

Handler.removeFilter()

Handler.setFormatter()

Handler.setLevel()

Formatter

该类对象是用于对LogRecord进行格式化处理的。
Formtter对象的初始化需要指定日志字符串格式,还可以指定时间格式,和格式化字符串使用的风格。
Fomatter对象是添加到Handler对象中的。

Filter

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/6375a23318a4f54e75a71b6d6113a6c5.html