草庐IT

Python 日志记录 : Set handlers for all loggers of used modules

我有我的主脚本,它使用argparse解释cli命令,然后通过调用另一个模块(由我自己制作)中的相应内容来启动应用程序。我现在的问题是如何从该模块将处理程序附加到记录器。使用检索记录器logger=logging.getLogger(__name__)因此我在主脚本中添加了以下内容:consoleHandler=logging.StreamHandler()logger=logging.getLogger('MyModule')logger.addHandler(consoleHandler)但是“MyModule”的日志输出为0。日志级别正确,例如应该有输出。在MyModule中,我

python - 我可以在 Celery 任务中使用通用的 logging.Logger() 吗?

医生说Aspecialloggerisavailablenamed“celery.task”,youcaninheritfromthisloggertoautomaticallygetthetasknameanduniqueidaspartofthelogs.这还不够。有更详细的信息吗?具体来说,它默认定义了哪些处理程序和格式字符串?我为什么要继承它?我可以改用通用的logging.Logger()吗?从celery任务(不是Django)记录到文件的最佳实践是什么?等谢谢。 最佳答案 CanIuseagenericlogging.

python - celery.utils.log.ProcessAwareLoggerobject 在 logging.Logger.manager.loggerDict 中做什么

我正在通过以下方式检查logging.Logger.manager.loggerDict:importlogginglogging.Logger.manager.loggerDict字典如下:{'nose.case':,'apps.friends':,'oauthlib.oauth2.rfc6749.grant_types.client_credentials':,'apps.adapter.views':,'apps.accounts.views':,}TherearemorebutItruncatedit我的问题是:celery为何会涉及其他各种非celery应用程序的日志记录?是

python - 如何使用日志记录、pytest fixture 和 capsys?

我正在尝试对一些使用日志库的算法进行单元测试。我有一个可以创建记录器的装置。在我的第一个测试用例中,我没有使用这个fixture,而是使用打印记录到标准输出。此测试用例通过。在我的第二个测试用例中,我使用了这个fixture,但没有在pytest文档中记录。我只是在我的测试中调用相关函数来获取记录器。然后我使用记录器记录到标准输出。此测试用例通过。在我的第三个测试用例中,我按照pytest文档中的说明使用了这个fixture。fixture作为参数传递给测试函数。然后我使用记录器记录到标准输出。此测试用例失败!它在stdout中找不到任何内容。但是在错误消息中,它说我的日志在捕获的标准

Python 多处理日志记录 - 为什么使用 multiprocessing.get_logger

一段时间以来,我一直在为多进程日志而苦苦挣扎,原因有很多。我的一个原因是,为什么要另一个get_logger。我当然见过thisquestion并且multiprocessing.get_logger返回的记录器似乎做了一些“进程共享锁”魔法来使日志记录处理顺畅。所以,今天我查看了Python2.7的多处理代码(/multiprocessing/util.py),发现这个记录器只是一个普通的logging.Logger,几乎没有任何魔法。这是Python文档中的描述,就在get_logger函数:Somesupportforloggingisavailable.Note,however

python - 主脚本停止时后台进程出现无效参数错误

我有这段代码可以通过运行后台进程来获取推文。以下脚本使用subprocess.Popen函数从主脚本运行。使得调用后台进程脚本后主脚本停止执行。defstart_listner(unique_id,keyword,limit=200):classCustomStreamListener(tweepy.StreamListener):def__init__(self,api):logger.info('runnning')self.api=apisuper(tweepy.StreamListener,self).__init__()#setuprabbitMQConnectiondefo

python - 在 Python 记录器中覆盖 lineno 的最佳方法

我编写了一个装饰器,用于记录用于调用特定函数或方法的参数。如下所示,除了logRecord中报告的行号是装饰器的行号而不是被包装的func的行号外,它运行良好:fromfunctoolsimportwrapsimportinspectimportloggingarg_log_fmt="{name}({arg_str})"deflog_args(logger,level=logging.DEBUG):"""Decoratortologargumentspassedtofunc."""definner_func(func):line_no=inspect.getsourcelines(fu

Python 将日志滚动到变量

我有一个使用多线程并在服务器后台运行的应用程序。为了在不登录服务器的情况下监控应用程序,我决定包括Bottle为了响应一些HTTP端点并报告状态,执行远程关闭等。我还想添加一种查询日志文件的方法。我可以使用FileHandler登录并在请求URL时发送目标文件(例如/log)。但是,我想知道是否有可能实现类似RotatingFileHandler的东西,但不是记录到文件,而是记录到变量(例如BytesIO).这样,我可以将日志限制为最新信息,同时能够将其作为文本而不是作为单独的文件下载返回给浏览器。RotatingFileHandler需要一个文件名,因此不能将BytesIO流传递给它

python - 有没有办法更改未使用 basicConfig 配置的记录器对象的文件模式?

如果我使用logger=logging.getLogger("Name")创建记录器对象,我无法将文件模式从append('a')更改为write('w')。如果我将根记录器与basicConfig一起使用,我可以,但是当我想要的只是从DEBUG级别开始的我自己的消息时,我会记录很多系统调试消息。我希望(1)将我自己的记录器对象的文件模式更改为“w”或(2)向根记录器添加过滤器。甚至可以从根记录器中过滤掉这些调试消息吗?defcreate_log():#createloggerfor"SampleApp"logger=logging.getLogger('automated_testi

python 2.7 : log displayed twice when `logging` module is used in two python scripts

上下文:Python2.7。同一文件夹中的两个文件:首先:主脚本。第二:自定义模块。目标:可以在没有任何冲突的情况下使用logging模块(见下面的输出)。文件:a.py:importloggingfrombimporttest_bdeftest_a(logger):logger.debug("debug")logger.info("info")logger.warning("warning")logger.error("error")if__name__=="__main__":#Customlogger.logger=logging.getLogger("test")formatt