Let's say I have a script like the following, and I can't edit it:
import logging
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
logger.addHandler(handler)
logger.debug('debug log')
logger.info('info log')
logger.warning('warning log')
logger.error('error log')
later I call this script with:
python log_example.py > file.log
But it isn't populating the file.log
file, but outputting the logs in console.
Q: Is there a way to, despite configuring logging handler to StreamHandler, still output the logs into a file from command line?
The StreamHandler class, located in the core logging package, sends logging output to streams such as sys. stdout, sys. stderr or any file-like object (or, more precisely, any object which supports write() and flush() methods).
To log an exception in Python we can use logging module and through that we can log the error. Logging an exception in python with an error can be done in the logging. exception() method. This function logs a message with level ERROR on this logger.
Try the &>
syntax, as in Pijnappel's answer to this question. This redirects all output (not just stdout) to the file.
python log_example.py &> file.log
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With