Skip to content

Instantly share code, notes, and snippets.

@fivunlm
Last active August 23, 2016 14:52
Show Gist options
  • Save fivunlm/6dbb41274ac489e0d1a722bc2ede70b4 to your computer and use it in GitHub Desktop.
Save fivunlm/6dbb41274ac489e0d1a722bc2ede70b4 to your computer and use it in GitHub Desktop.
#!/usr/bin/python3
import argparse
import logging
import os
import sys
LOG_DIR = '/var/log/'
def setup_log(level, log_dir, log_to_console):
# Set up logging
root = logging.getLogger()
root.setLevel(level)
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(threadName)s - %(thread)X - %(message)s')
# Stdout logger
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
# File logger
file_name = os.path.join(log_dir, 'logfile.log')
file_handler = logging.handlers.RotatingFileHandler(file_name, maxBytes=100 * 1024 * 1024)
file_handler.setFormatter(formatter)
root.addHandler(file_handler)
if log_to_console:
root.addHandler(console_handler)
def str_to_log_level(str_level):
levels = {
'ERROR': logging.ERROR,
'WARN': logging.WARN,
'INFO': logging.INFO,
'DEBUG': logging.DEBUG
}
return levels[str_level.upper()]
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--log-level', default='DEBUG')
parser.add_argument('--log-dir', default=LOG_DIR)
parser.add_argument('--log-to-console', action='store_true')
parser.add_argument('--remote-debug', action='store_true')
parser.add_argument('--test', action='store_true')
args = parser.parse_args()
if args.remote_debug:
# Enable remote debugging
sys.path.append('./pycharm-debug-py3k.egg')
import pydevd
pydevd.settrace('192.168.86.1', port=2033, stdoutToServer=True, stderrToServer=True)
if args.test:
from tests import run
run()
exit(0)
setup_log(str_to_log_level(args.log_level), args.log_dir, args.log_to_console)
run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment