在Python中logging的示例

关于logging模块的使用参考这篇文章

一般的logging初始化代码如下:

import logging
import sys

def MyClass:
    def __init___(self, logDir=None):
        self.log = logging.getLogger('MyLog')
        self.log.setLevel('INFO')

        fmt = "%(asctime)-15s %(levelname)s %(filename)s %(lineno)d %(process)d %(message)s"
        datefmt = "%a %d %b %Y %H:%M:%S"
        formatter = logging.Formatter(fmt, datefmt)

        # 终端输出句柄
        sh = logging.StreamHandler(sys.stdout)
        sh.setFormatter(formatter)
        sh.setLevel('DEBUG')
        self.log.addHandler(sh)

        if logDir:
            # 文件输出句柄,保存在路径 logDir 下
            logFileName = os.path.join(logDir, self.name + '.log')
            fh = logging.FileHandler(logFileName)
            fh.setFormatter(formatter)
            fh.setLevel('INFO')
            self.log.addFilter(fh)

以上,在给定了日志文件路径的情况下,会保存到指定目录。否则的话,只会在终端输出。

另一个方法是直接使用配置文件,写一个配置文件logging.json如下:

{
  "host": "localhost",
  "port": 27017,
  "dbn": "slavem",
  "serverChan": [
    "SCU3933Tab181d054223a5d94711915b357cd8c5582e9d81cbc5b"
  ],
  "logconfig": {
    "version": 3,
    "formatters": {
      "simple": {
        "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
      }
    },
    "handlers": {
      "console": {
        "class": "logging.StreamHandler",
        "level": "DEBUG",
        "formatter": "simple"
      },
      "file": {
        "class": "logging.FileHandler",
        "filename": "logging.log",
        "level": "DEBUG",
        "formatter": "simple"
      },
      "mongo": {
        "class": "log4mongo.handlers.MongoHandler",
        "host": "localhost",
        "port": 27017,
        "database_name": "mongo_logs2",
        "collection": "logs",
        "level": "DEBUG"
      }
    },
    "loggers": {
      "root": {
        "handlers": [
          "console"
        ],
        "level": "DEBUG",
        "propagate": true
      },
      "simple": {
        "handlers": [
          "console",
          "file"
        ],
        "level": "WARN"
      },
      "mongo": {
        "handlers": [
          "console",
          "mongo"
        ],
        "level": "DEBUG"
      }
    }
  }
}

直接加载配置文件即可


logging.config.dictConfig(config)
simple = logging.getLogger('simple')
# 将日志存入到 MongoDB 的句柄
mongo =logging.getLogger('simple')
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容