I want to be able to have my own loggers at some level, but not show the info from another modules.
I have these versions:
FORMAT = '[%(asctime)s] {%(name)s:%(lineno)d} %(levelname)s - %(message)s'
def configure_logging():
# set up logging to console
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter(FORMAT)
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
This version, prints everything on DEBUG, not only my loggers
FORMAT = '[%(asctime)s] {%(name)s:%(lineno)d} %(levelname)s - %(message)s'
def configure_logging():
# set up logging to console
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter(FORMAT)
console.setFormatter(formatter)
logging.getLogger('').addHandler(console)
This version, prints nothing on DEBUG, not even when my loggers are configured with setLevel(logging.DEBUG)
, and calling logger.debug('my_message')
So I tried to make different console handlers in next version
FORMAT = '[%(asctime)s] {%(name)s:%(lineno)d} %(levelname)s - %(message)s'
def configure_logging():
# set up logging to console
root_console = logging.StreamHandler()
root_console.setLevel(logging.INFO)
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter(FORMAT)
root_console.setFormatter(formatter)
console.setFormatter(formatter)
logging.getLogger('').addHandler(root_console)
logging.getLogger('my_logger').addHandler(console)
It turned out that now, I achieved what I wanted, however, the INFO messages gets logged twice (I assume, one for each handler)...
So, I guess there is a better approach.
As summary, I would like something like:
my_module1.logger1 --> DEBUG
my_module1.logger2 --> DEBUG
my_module2.logger1 --> DEBUG
my_module2.logger2 --> WARNING
my_module2.logger3 --> DEBUG
REST_OF_LOGS --> INFO
So I could do something like(pseudocode):
'my_module1'.setLevel(DEBUG)
'my_module2'.setLevel(DEBUG)
'my_module2.logger2'.setLevel(WARNING)
''.setLevel(INFO)
It was just a stupid mistake. I forgot to specify root logger level, and at some point, some library was setting it up at some level.
My new source code working is the following: