logging 模块

Posted lanbing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logging 模块相关的知识,希望对你有一定的参考价值。

logging库提供了多个组件:Logger、Handler、Filter、Formatter。

  logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。

        handler:将日志记录(log record)发送到合适的目的地(destination),比如文件,socket等。一个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现日志分级过滤显示。

        filter:提供一种优雅的方式决定一个日志记录是否发送到handler。

        formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。

 

 

     #创建一个logger
        self.logger = logging.getLogger(logger)
        self.logger .setLevel(logging.DEBUG)

        #创建一个hander,用于写入日志文件
        fh = logging.FileHandler(log_name)
        fh.setLevel(logging.INFO)

        #再创建一个handler,用于输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(logging.INFO)

        #定义handler的输出格式
        formatter = logging.Formatter(%(asctime)s - %(name)s - %(levelname)s - %(message)s)
        fh.setFormatter(formatter)
        ch.setFormatter(formatter)

        #给logger添加handler
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)

 

 

以上是关于logging 模块的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

python常用代码片段总结

前端开发常用js代码片段

vs code 自定义代码片段

如何有条件地将 C 代码片段编译到我的 Perl 模块?