Skip to content

Commit

Permalink
update skeleton - nicer logging setup
Browse files Browse the repository at this point in the history
  • Loading branch information
jantman committed Aug 10, 2016
1 parent 990472c commit 3fc6166
Showing 1 changed file with 48 additions and 7 deletions.
55 changes: 48 additions & 7 deletions skeleton.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
#!/usr/bin/env python
"""
Skeleton
========
Generic python2.7+ (incl. py3x) command line script skeleton.
This implements most of the common stuff I put in one-off scripts
to make them actually not-so-shitty.
Expand All @@ -13,10 +16,17 @@
you'll likely need to flip back to using optparse. In that case,
see <https://docs.python.org/2/library/optparse.html>.
License
-------
Copyright 2014 Jason Antman <jason@jasonantman.com> <http://www.jasonantman.com>
Free for any use provided that patches are submitted back to me.
CHANGELOG:
CHANGELOG
---------
2016-08-10 Jason Antman <jason@jasonantman.com>:
- nicer logging setup and docstring
2015-07-06 Jason Antman <jason@jasonantman.com>:
- switch to module-level logger
2014-12-25 Jason Antman <jason@jasonantman.com>:
Expand All @@ -33,9 +43,9 @@
import argparse
import logging

FORMAT = "[%(levelname)s %(filename)s:%(lineno)s - %(funcName)20s() ] %(message)s"
logging.basicConfig(level=logging.ERROR, format=FORMAT)
logger = logging.getLogger(__name__)
FORMAT = "[%(asctime)s %(levelname)s] %(message)s"
logging.basicConfig(level=logging.WARNING, format=FORMAT)
logger = logging.getLogger()


class SimpleScript:
Expand Down Expand Up @@ -71,11 +81,42 @@ def parse_args(argv):

return args

def set_log_info():
"""set logger level to INFO"""
set_log_level_format(logging.INFO,
'%(asctime)s %(levelname)s:%(name)s:%(message)s')


def set_log_debug():
"""set logger level to DEBUG, and debug-level output format"""
set_log_level_format(
logging.DEBUG,
"%(asctime)s [%(levelname)s %(filename)s:%(lineno)s - "
"%(name)s.%(funcName)s() ] %(message)s"
)


def set_log_level_format(level, format):
"""
Set logger level and format.
:param level: logging level; see the :py:mod:`logging` constants.
:type level: int
:param format: logging formatter format string
:type format: str
"""
formatter = logging.Formatter(fmt=format)
logger.handlers[0].setFormatter(formatter)
logger.setLevel(level)

if __name__ == "__main__":
args = parse_args(sys.argv[1:])

# set logging level
if args.verbose > 1:
logger.setLevel(logging.DEBUG)
elif args.verbose > 0:
logger.setLevel(logging.INFO)
set_log_debug()
elif args.verbose == 1:
set_log_info()

script = SimpleScript(dry_run=args.dry_run)
script.run()

0 comments on commit 3fc6166

Please sign in to comment.