所以我试图在多个模块中记录一些信息,然后我设置了一个记录器,但它记录了两次。我已经研究了一段时间了,主要的建议是在我记录的每个模块中添加一个getLogger(' something')。如果必须,我将以这种方式实现它,但我正在寻找一种方法(如果存在的话)在我的主模块中创建一次记录器,并将其传递给其他模块(希望通过导入)。
这是我在 init .py,
中创建记录器的方法formatter = logging.Formatter("[%(asctime)s] {%(module)s:%(lineno)d} (levelname)s - %(message)s")
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
app.logger.addHandler(file_handler)
我当前导入的其他模块,并按如下方式调用,
from __init__ import app
app.logger.info("message test")
答案 0 :(得分:0)
logging.conf
[loggers]
keys=root,main
[logger_root]
level=DEBUG
handlers=consoleHandler
[logger_main]
level=DEBUG
qualname=main
handlers=fileHandler
#####################handlers#########################
[handlers]
keys=consoleHandler,fileHandler
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=fmt
args=(sys.stdout,)
#10M-->10*1024*1024,append mod,5-->5 pcs
[handler_fileHandler]
class=logging.handlers.RotatingFileHandler
level=DEBUG
formatter=fmt
args=('info.log','a',10*1024*1024,5,)
######################formatters#########################
[formatters]
keys=fmt
[formatter_fmt]
format= %(asctime)s %(filename)s[line:%(lineno)d] -loggername:%(name)s- %(levelname)s --> %(message)s
datefmt=
################################################
你的脚本:
import logging
import logging.config
logging.config.fileConfig('logging.conf')
logger = logging.getLogger("main")
logger.debug('This is debug message')
logger.info('This is info message')
logger.warning('This is warning message')
logger.error('this is error message')
logger.critical('this critical')
答案 1 :(得分:0)
__init__.py
:
import logging
formatter = logging.Formatter("[%(asctime)s] {%(module)s:%(lineno)d} (levelname)s - %(message)s")
file_handler = logging.FileHandler('example.log')
file_handler.setLevel(logging.INFO)
file_handler.setFormatter(formatter)
logger = logging.getLogger('app')
logger.addHandler(file_handler)
logger.setLevel(logging.INFO)
logger.info('Logger initialized')
app.py
:
from __init__ import logger
logger.info('message test')
运行app.py 一次:后, example.log
的内容
[2016-03-01 20:03:01,364] {__init__:12} (levelname)s - Logger initialized
[2016-03-01 20:03:01,364] {app:3} (levelname)s - message test
再次运行app.py之后内容example.log
:
[2016-03-01 20:03:01,364] {__init__:12} (levelname)s - Logger initialized
[2016-03-01 20:03:01,364] {app:3} (levelname)s - message test
[2016-03-01 20:03:12,034] {__init__:12} (levelname)s - Logger initialized
[2016-03-01 20:03:12,034] {app:3} (levelname)s - message test
这有帮助吗?