关于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')