Write your code with a nice logger
import logging
def init_logging():
logFormatter = logging.Formatter("[%(asctime)s] %(levelname)s::%(module)s::%(funcName)s() %(message)s")
rootLogger = logging.getLogger()
LOG_DIR = os.getcwd() + '/' + 'logs'
if not os.path.exists(LOG_DIR):
os.makedirs(LOG_DIR)
fileHandler = logging.FileHandler("{0}/{1}.log".format(LOG_DIR, "g2"))
fileHandler.setFormatter(logFormatter)
rootLogger.addHandler(fileHandler)
rootLogger.setLevel(logging.DEBUG)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
rootLogger.addHandler(consoleHandler)
return rootLogger
logger = init_logging()
works as expected. Logging using logger.debug("Hello! :)")
logs to file and console.
In a second step you want to import an external module which is also logging using logging module:
- Install it using
pip3 install pymisp
(or any other external module) - Import it using
from pymisp import PyMISP
(or any other external module) - Create an object of it using
self.pymisp = PyMISP(self.ds_model.api_url, self.ds_model.api_key, False, 'json')
(or any other...)
What now happens is, that every debug log output from the imported module is getting logged to the log file and the console. The question now is, how to set a different (higher) log level for the imported module.
logging.getLogger('modulename').setLevel(logging.DEBUG)
instead of directly manipulating a logging object from a module. - anishtain4