I try to implement a StreamHandler
which logs to stdout
at debug level. So far so good, this is my code.
import logging
import sys
# Detaillierter Logger
logger = logging.getLogger()
file_handler = logging.FileHandler("logs.txt")
file_handler.setLevel(logging.ERROR)
stream_handler = logging.StreamHandler(stream=sys.stdout)
stream_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(message)s")
stream_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
logger.addHandler(file_handler)
# 'application' code
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
I expected to see all logs in my console, but debug and info did not get logged.
(base) C:\Users\User\Desktop\Logging>python script.py
2021-10-30 15:32:49,034 | WARNING | warn message
2021-10-30 15:32:49,034 | ERROR | error message
2021-10-30 15:32:49,035 | CRITICAL | critical message
My logs.txt file is correct. Can anyone tell me how to fix this and WHY the streamhandler does not work as expected?
# You need also
logger.setLevel(logging.DEBUG)
You need to add several logger handlers, not only set logger handler.
import logging
logging.getLogger().addHandler(logging.StreamHandler())
you can also use a config for logging
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s [%(levelname)s] %(message)s",
handlers=[
logging.FileHandler("debug.log"),
logging.StreamHandler()
]
)
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.