Last active
September 19, 2017 08:35
-
-
Save cgiacomi/a1144e1a4f6c486da435ca79664044c5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# CREDIT: https://stackoverflow.com/a/2893833/772175 | |
# If you wish to print to both the terminal and to a log file, then I'd suggest using the logging module. You can even define a custom formatter, so logging to the file can purge the terminal codes: | |
import optparse | |
import logging | |
def error(string): | |
return '\033[31;1m' + string + '\033[0m' | |
def standout(string): | |
return '\033[34;1m' + string + '\033[0m' | |
def plain(string): | |
return string.replace('\033[34;1m','').replace('\033[31;1m','').replace('\033[0m','') | |
if __name__=='__main__': | |
logging.basicConfig(level=logging.DEBUG, | |
format='%(message)s', | |
filemode='w') | |
logger=logging.getLogger(__name__) | |
def parse_options(): | |
usage = 'usage: %prog [Options]' | |
parser = optparse.OptionParser() | |
parser.add_option('-l', '--logfile', dest='logfile', | |
help='use log file') | |
opt,args = parser.parse_args() | |
return opt,args | |
opt,args=parse_options() | |
if opt.logfile: | |
class MyFormatter(logging.Formatter): | |
def format(self,record): | |
return plain(record.msg) | |
fh = logging.FileHandler(opt.logfile) | |
fh.setLevel(logging.INFO) | |
formatter = MyFormatter('%(message)s') | |
fh.setFormatter(formatter) | |
logging.getLogger('').addHandler(fh) | |
logger.info(error('There was a problem with the program')) | |
logger.info("This is normal " + standout("and this stands out")) | |
# test.py prints only to the terminal. | |
# test.py -l test.out prints to both the terminal and to the file test.out. | |
# In all cases, the text to the terminal has color codes, while the logging has none. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment