Skip to content

Commit

Permalink
Add utilities for controlling urbansim logging.
Browse files Browse the repository at this point in the history
  • Loading branch information
jiffyclub committed Jun 23, 2014
1 parent b23acf4 commit 551d86f
Showing 1 changed file with 54 additions and 0 deletions.
54 changes: 54 additions & 0 deletions urbansim/utils/logutil.py
@@ -1,6 +1,11 @@
import contextlib
import logging

US_LOG_FMT = ('%(asctime)s|%(levelname)s|%(name)s|'
'%(funcName)s|%(filename)s|%(lineno)s|%(message)s')
US_LOG_DATE_FMT = '%Y-%m-%d %H:%M:%S'
US_FMT = logging.Formatter(fmt=US_LOG_FMT, datefmt=US_LOG_DATE_FMT)


@contextlib.contextmanager
def log_start_finish(msg, logger, level=logging.DEBUG):
Expand All @@ -20,3 +25,52 @@ def log_start_finish(msg, logger, level=logging.DEBUG):
logger.log(level, 'start: ' + msg)
yield
logger.log(level, 'finish: ' + msg)


def set_log_level(level):
"""
Set the logging level for urbansim.
Parameters
----------
level : int
A supporting logging level. Use logging constants like logging.DEBUG.
"""
logging.getLogger('urbansim').setLevel(level)


def log_to_stream(level=None):
"""
Send log messages to the console.
"""
handler = logging.StreamHandler()
handler.setFormatter(US_FMT)

if level is not None:
handler.setLevel(level)

logger = logging.getLogger()
logger.addHandler(handler)


def log_to_file(filename, level=None):
"""
Send log output to the given file.
Parameters
----------
filename : str
level : int, optional
Optional logging level for the file handler.
"""
handler = logging.FileHandler(filename)
handler.setFormatter(US_FMT)

if level is not None:
handler.setLevel(level)

logger = logging.getLogger()
logger.addHandler(handler)

0 comments on commit 551d86f

Please sign in to comment.