summaryrefslogtreecommitdiffstats
path: root/src/lib/Logger.py
diff options
context:
space:
mode:
authorNarayan Desai <desai@mcs.anl.gov>2008-09-29 11:55:10 +0000
committerNarayan Desai <desai@mcs.anl.gov>2008-09-29 11:55:10 +0000
commit9935853fa13c834d644512a561835b72a5bf3dc8 (patch)
treed1de4bb660661afc28793758373a5b4c9b1bd219 /src/lib/Logger.py
parent74118024ce239a00dce3258f60eb743c4583c0ac (diff)
downloadbcfg2-9935853fa13c834d644512a561835b72a5bf3dc8.tar.gz
bcfg2-9935853fa13c834d644512a561835b72a5bf3dc8.tar.bz2
bcfg2-9935853fa13c834d644512a561835b72a5bf3dc8.zip
Get rid of errant newlines (Resolves #599 for real this time)
git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4925 ce84e21b-d406-0410-9b95-82705330c041
Diffstat (limited to 'src/lib/Logger.py')
-rw-r--r--src/lib/Logger.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/lib/Logger.py b/src/lib/Logger.py
index b9b4679bb..bb3c703a6 100644
--- a/src/lib/Logger.py
+++ b/src/lib/Logger.py
@@ -158,3 +158,58 @@ def setup_logging(procname, to_console=True, to_syslog=True, syslog_facility='da
logging.root.addHandler(filelog)
logging.root.setLevel(level)
logging.already_setup = True
+
+def trace_process (**kwargs):
+
+ """Literally log every line of python code as it runs.
+
+ Keyword arguments:
+ log -- file (name) to log to (default stderr)
+ scope -- base scope to log to (default Cobalt)"""
+
+ file_name = kwargs.get("log", None)
+ if file_name is not None:
+ log_file = open(file_name, "w")
+ else:
+ log_file = sys.stderr
+
+ scope = kwargs.get("scope", "Cobalt")
+
+ def traceit (frame, event, arg):
+ if event == "line":
+ lineno = frame.f_lineno
+ filename = frame.f_globals["__file__"]
+ if (filename.endswith(".pyc") or
+ filename.endswith(".pyo")):
+ filename = filename[:-1]
+ name = frame.f_globals["__name__"]
+ line = linecache.getline(filename, lineno)
+ print >> log_file, "%s:%s: %s" % (name, lineno, line.rstrip())
+ return traceit
+
+ sys.settrace(traceit)
+
+def log_to_stderr (logger_name, level=logging.INFO):
+ """Set up console logging."""
+ try:
+ logger = logging.getLogger(logger_name)
+ except:
+ # assume logger_name is already a logger
+ logger = logger_name
+ handler = logging.StreamHandler() # sys.stderr is the default stream
+ handler.setLevel(level)
+ handler.setFormatter(TermiosFormatter()) # investigate this formatter
+ logger.addHandler(handler)
+
+def log_to_syslog (logger_name, level=logging.INFO, format='%(name)s[%(process)d]: %(message)s'):
+ """Set up syslog logging."""
+ try:
+ logger = logging.getLogger(logger_name)
+ except:
+ # assume logger_name is already a logger
+ logger = logger_name
+ # anticipate an exception somewhere below
+ handler = logging.handlers.SysLogHandler() # investigate FragmentingSysLogHandler
+ handler.setLevel(level)
+ handler.setFormatter(logging.Formatter(format))
+ logger.addHandler(handler)