相关疑难解决方法(0)

使用Python日志记录模块时,日志输出重复

我正在使用python logger.以下是我的代码:

import os
import time
import datetime
import logging
class Logger :
   def myLogger(self):
      logger = logging.getLogger('ProvisioningPython')
      logger.setLevel(logging.DEBUG)
      now = datetime.datetime.now()
      handler=logging.FileHandler('/root/credentials/Logs/ProvisioningPython'+ now.strftime("%Y-%m-%d") +'.log')
      formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
      handler.setFormatter(formatter)
      logger.addHandler(handler)
      return logger
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我在每个logger.info调用的日志文件中都有多个条目.我怎么解决这个问题?

python

89
推荐指数
10
解决办法
5万
查看次数

使用带有AWS Lambda的python日志记录

正如AWS文档所示:

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_logging_handler(event, context):
    logger.info('got event{}'.format(event))
    logger.error('something went wrong')
Run Code Online (Sandbox Code Playgroud)

现在我做了:

import logging
logging.basicConfig(level = logging.INFO)
logging.info("Hello World!")
Run Code Online (Sandbox Code Playgroud)

第一段代码在Cloud Watch控制台中打印,但第二段没有.

我没有看到任何差异,因为两个片段正在使用根记录器.

python logging amazon-web-services aws-lambda

38
推荐指数
6
解决办法
2万
查看次数

Python:从不同模块登录到同一文件的正确方法

我随着时间的推移编写了一堆脚本,我正在重新编写脚本以保持代码DRY.我目前在各种脚本中使用这些内容:

if __name__ == '__main__':
    logger = logging.getLogger('dbinit')
    hdlr = logging.FileHandler('/var/logs/tmp/foo.log')
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    hdlr.setFormatter(formatter)
    logger.addHandler(hdlr) 
    logger.setLevel(logging.WARNING)
Run Code Online (Sandbox Code Playgroud)

我想在每个脚本(即"模块")中重复这个,而不是在某个地方完成这个记录器初始化,并通过各种脚本访问(嗯,可能包装在单个类中?).

如果我不能这样做(即将记录器初始化代码放在一个核心模块中),我假设通过在logging.FileHandler()调用中使用相同的日志文件名,各种脚本将写入同一文件.

这个假设是否正确?

最后但并非最不重要的是,解决这个问题的最佳实践(即Pythonic)方法是什么?

python logging

10
推荐指数
1
解决办法
7348
查看次数

标签 统计

python ×3

logging ×2

amazon-web-services ×1

aws-lambda ×1