I have a main file where I use all the functions from the module. I want to log all the necessary things into file and into stdout.
It works when I use logger.info("Write it into file")
inside main file, but it doesn't work when I import here some functions from the other scripts.
I use it inside main file to make a logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
# create file handler
fh = logging.FileHandler('logging.log', mode='a')
fh.setLevel(logging.DEBUG)
# create console handler
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.INFO)
# create formatter and add it to the handlers
formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
And in other file I use only
logger = logging.getLogger(__name__)
How can I get all the logs?
__name__
has different values in your two modules, so you really have two different loggers. You are only adding the file handler to one of them.
You want to configure a common ancestor. That could be the root logger:
root_logger = logging.getLogger()
...
root_logger.addHandler(fh)
root_logger.addHandler(ch)
or a specific logger that only your two loggers inherit from.
base_logger = logging.getLogger('base')
# configure base_logger
logger_in_main = logging.getLogger('base.' + __name__)
and
logger_in_other = logging.getLogger('base.' + __name__)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.