Giter VIP home page Giter VIP logo

Comments (6)

superlevure avatar superlevure commented on June 30, 2024 11

I finally found the way to do it, it is actually quite simple (and present in the API doc):

service = services.Geckodriver(binary=GECKODRIVER, log_file=os.devnull)

from arsenic.

nokados avatar nokados commented on June 30, 2024 9

Quick fix

def set_arsenic_log_level(level = logging.WARNING):
    # Create logger
    logger = logging.getLogger('arsenic')

    # We need factory, to return application-wide logger
    def logger_factory():
        return logger

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

from arsenic.

ojii avatar ojii commented on June 30, 2024

The docs should do a better job here I agree. Arsenic uses structlog so for now please check their documentation on how to control output.

from arsenic.

superlevure avatar superlevure commented on June 30, 2024

I am encountering the same issue and can not manage to disable all logging to stdout even after reading the structlog manual.
Is there a chance someone has the solution ?

from arsenic.

sVerentsov avatar sVerentsov commented on June 30, 2024

In my case, I wanted to preserve logging by just trimming long values in methods like screenshot.
This could be achieved by custom processor:

class DictTrimmerProcessor:
    def __init__(self, max_chars=25) -> None:
        self.max_chars = max_chars
        self.block_length = max_chars // 2 - 1

    def __call__(self, logger, method_name, event_dict):
        for field in event_dict:
            if isinstance(event_dict[field], dict):
                val = deepcopy(event_dict[field]) # Copy so that original event_dict is not changed
                for key in val:
                    if isinstance(val[key], str) and len(val[key]) > self.max_chars:
                        val[key] = f"{val[key][:self.block_length]}...{val[key][-self.block_length:]}"
                event_dict[field] = val
        return event_dict


def fix_arsenic_log():
    processors = structlog.get_config().get("processors", [])
    processors.insert(0, DictTrimmerProcessor())
    structlog.configure(processors=processors)

Hope someone finds this helpful since this issue is first on google when searching for logging problems in arsenic.

from arsenic.

ringzinc avatar ringzinc commented on June 30, 2024

Using Python 3.10.7 and arsenic 21.8 on Windows 10 here. The confusing part is that arsenic, geckodriver and Firefox all emit info logs to the console, so I had do to quite a few things to turn the noise off:

  1. Comment out all log.info() in <your python install path>\Lib\site-packages\arsenic\connection.py on my machine
  2. Initiate arsenic using the following code (and remove -headless and -private if you don't need them)
service = arsenic.services.Geckodriver(log_file=os.devnull)
browser = arsenic.browsers.Firefox(**{'moz:firefoxOptions': {'args': ['-headless', '-private'], 'log': {'level': 'warn'}}})

I hope this will help someone, and I hope the arsenic developers will give us an option to turn off the logs in future releases

from arsenic.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.