如何获取多个实例进行日志记录?

时间:2020-11-03 07:52:40

标签: python flask logging

我有一个主要的Flask Apoplication,名为app.py。在此文件中,我正在创建名为app.log的记录器文件。在同一目录中,我还有另一个名为cron.py的python文件。在此文件中,我正在创建名为cron.log的记录器文件。我的目标是将两个应用程序都单独记录为单独的文件。

app.py如下所示:

import statements
from app import method1, method2
.
.
.
logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger()
logger.setLevel(logging.INFO)
.
.
.
@app.route('/')
def welcome():
    app.logger.info("I am welcome page")
    return jsonify({"status": True, "message": "I am welcome page"})
.
.
.
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8000)

cron.py如下所示:

import statements
.
.
.
logging.basicConfig(filename='cron.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logger2 = logging.getLogger()
logger2.setLevel(logging.INFO)
.
.

call_service();
   logger2.info("Welcome")
.
.
if __name__ == '__main__':
   call_service()

在cron.py中,我正在从app.py中导入一些方法。因此,我的服务将两个日志内容都存储在app.log中。但是,我只想将应用程序日志存储在app.log中,将cron日志存储在cron.log文件中。如何克服这种情况?

尝试1: 在两个get_logger方法中,我都传递了不同的名称。结果:仍然为两个日志内容写入app.log。

尝试2: 在app.py中,我创建了init方法,并将日志记录初始化放入该方法中,并在main方法中称为init方法。结果:它将日志分为两个文件。但是,日志内容是在tdout控制台中打印的。

尝试3: 在app.py中,我创建了init方法,并使用logger作为全局变量,将日志记录初始化放入了该方法,并在main方法中称为了init方法。相反,我将app.logger.info()称为logger.info()结果:它将日志分为两个文件。这样可以解决问题,但我认为这已经使问题复杂化了。

任何提示都是有意义的。

0 个答案:

没有答案