首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用日志记录控制structlog

无法使用日志记录控制structlog
EN

Stack Overflow用户
提问于 2021-01-11 09:45:08
回答 2查看 301关注 0票数 0

我无法禁用默认情况下通过structlog打开的日志记录

下面是我的代码:

输入文件包含:

代码语言:javascript
复制
5418531366
5418531367
代码语言:javascript
复制
import asyncio
import pathlib
import sys
from arsenic import get_session, errors
from arsenic.browsers import Firefox
from arsenic.services import Geckodriver
from aiofile import async_open
from termcolor import colored
import os


async def browse(numbers, baseurl):
    limit = asyncio.Semaphore(3)

    async def call(num):
        async with limit, get_session(Geckodriver(log_file=os.devnull), Firefox(**{'moz:firefoxOptions': {'args': ['-headless']}})) as session:
            await session.get(baseurl)
            fixednum = await session.wait_for_element(10, '#attContent_txtAccessNumber')
            await fixednum.send_keys('8778791867')
            dynnum = await session.wait_for_element(10, '#attContent_txtPIN')
            await dynnum.send_keys(num)
            goal = await session.get_element('#attContent_btnSubmit')
            await asyncio.sleep(0.3)
            await goal.click()

            try:
                await session.wait_for_element_gone(10, '#attContent_btnSubmit')
                return str(num)
            except errors.ArsenicTimeout:
                return False

    tasks = [call(n) for n in numbers]
    async with async_open('result.txt', 'w') as f:
        for task in asyncio.as_completed(tasks):
            task = await task
            if task:
                print(f"\nAvailable -- > {colored(task,'green')}\n")
                await f.write(task + "\n")


async def amain():
    baseurl = "https://www.virtualprepaidminutes.com/ATT_prepaid_calling_cards_refill_online.aspx"
    if len(sys.argv) != 2:
        return f"Usage: python {pathlib.Path(__file__).name} `InputFile`"

    try:
        numbers = pathlib.Path(sys.argv[1]).read_text(
            encoding="utf8").splitlines()
        await browse(numbers, baseurl)

    except FileNotFoundError as e:
        print(f"File {e.filename} is not exist!")


def main():
    return asyncio.run(amain())


if __name__ == "__main__":
    sys.exit(main())

代码运行良好,但我希望删除终端中显示的日志,因为我已经尝试了多种方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-12 08:08:55

使用以下函数求解:

代码语言:javascript
复制
def set_arsenic_log_level(level = logging.WARNING):
    logger = logging.getLogger('arsenic')


    def logger_factory():
        return logger

    structlog.configure(logger_factory=logger_factory)
    logger.setLevel(level)

贷方-> Github Answer

票数 -1
EN

Stack Overflow用户

发布于 2021-01-11 14:39:31

您的示例既不包含structlog也不包含logging配置,也不调用这两种配置-因此它很难帮助您。我要胡乱猜测一下,假设日志记录来自砷。

如果你想在主题暗示时通过stdlib控制structlog,你必须将其配置为与stdlib集成。文档记录在这里:https://www.structlog.org/en/stable/standard-library.html#suggested-configurations

之后,structlog将通过stdlib进行日志记录,因此会考虑stdlib的日志级别。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65660404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档