I am fairly new in python and starting to get into the logging module. I would like to have the message logged into a log file and outputting to the console. The code below prin
After having used Waterboy's code for simultaneous logging to console and to file (see this thread) over and over in multiple Python packages, I finally cast it into a tiny standalone Python package, which you can find here:
https://github.com/acschaefer/duallog
The code is well documented and easy to use. Simply download the .py
file and include it in your project, or install the whole package via python setup.py install
.
Using this package, your code would look like this:
# Set up logging to console and file.
import duallog
duallog.setup(logdir='my_logs')
# Generate log messages.
import logging
logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')
You just need to add another handler, like a logging.FileHandler
fh = logging.FileHandler(r'/path/to/log.txt')
logger.addHandler(fh)
Expanding on @Brendan's answer.
Your logger currently outputs to the console using a StreamHandler.
By adding a FileHandler, you can log to a file.
Each handler instance can be customized to have its own format and logging level.
If you want to log using the same format, you will have to set the format on the new FileHandler as well.
fh = logging.FileHandler(r'/path/to/log.txt')
fh.setFormatter(formatter)
logger.addHandler(fh)
Read more: Python logging cookbook