import sys
import traceback
from zLOG import LOG, INFO, WARNING


def log(summary='', text='', log_level=INFO):
    LOG('Plone Debug', log_level, summary, text)

# Enable scripts to get the string value of an exception
# even if the thrown exception is a string and not a
# subclass of Exception.
def exceptionString():
    s = sys.exc_info()[:2]  # don't assign the traceback to s
                            # (otherwise will generate a circular reference)
    if s[0] == None:
        return None
    if isinstance(s[0], basestring):
        return s[0]
    return str(s[1])

# provide a way of dumping an exception to the log even if we
# catch it and otherwise ignore it
def logException():
    """Dump an exception to the log"""
    log(summary=str(exceptionString()),
        text='\n'.join(traceback.format_exception(*sys.exc_info())),
        log_level=WARNING)
