MyKings / python-masscan

python-masscan is a python library which helps in using masscan port scanner.
https://pypi.org/project/python-masscan/
GNU General Public License v3.0
281 stars 60 forks source link

confusion caused by "logging.basicConfig(format=FORMAT)" #30

Closed ke0ge closed 1 year ago

ke0ge commented 4 years ago

After importing masscan, it will cause my own logger to print multiple logs, which will cause some confusion.

>>> import logging
>>> logger = logging.getLogger("test")
>>> formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
>>> handler = logging.StreamHandler()
>>> handler.setFormatter(formatter)
>>> logger.addHandler(handler)
>>> logger.setLevel(level = logging.INFO)
>>> logger.info("fine")
2020-03-28 00:26:06,310 - test - INFO - fine
>>> import masscan
>>> logger.info("fine")
2020-03-28 00:26:11,949 - test - INFO - fine
[2020-03-28 00:26:11,949] [INFO] [<stdin> 20 line] fine

Although it can be solved in the following way

>>> import logging
>>> logger = logging.getLogger("test")
>>> formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
>>> handler = logging.StreamHandler()
>>> handler.setFormatter(formatter)
>>> logger.addHandler(handler)
>>> logger.setLevel(level = logging.INFO)
>>> logger.info("fine")
2020-03-28 00:26:06,310 - test - INFO - fine
>>> import masscan
>>> logger.info("fine")
2020-03-28 00:26:11,949 - test - INFO - fine
[2020-03-28 00:26:11,949] [INFO] [<stdin> 20 line] fine
>>> logger.parent.handlers=[]
>>> logger.info("fine")
2020-03-28 00:26:19,866 - test - INFO - fine

But in order not to cause unnecessary confusion for newbies, how about do not to use logging.basicConfig()