X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=t%2Fmoe%2Flog.py;h=3fcac226d3f286bc1666b0aa881de78455197ab3;hb=11ea8e933d3a8d827da650898c277424e64f2040;hp=c2ab4d23fd575cd2d5cdcdb74c36cfd2657617de;hpb=68f218d13ab1587f33c603cd61e5833ea08ce230;p=moe.git diff --git a/t/moe/log.py b/t/moe/log.py index c2ab4d2..3fcac22 100644 --- a/t/moe/log.py +++ b/t/moe/log.py @@ -1,8 +1,23 @@ #!/usr/bin/env python +""" + +`Loggers` is a collection of logggers for :class:`~moe.eval.Eval`, initializing 4 subloggers (see class description). + +Use as `e.log.debug(...)` for main log that goes both to `test` and `main` log, +`e.log.test.debug(...)` for individual logs. + +.. :data:: DDEBUG = 5 + Very verbose debugging level + +""" + + import sys, os import logging -from logging import Logger, StreamHandler +from logging import Logger, StreamHandler, Formatter + +logging.addLevelName(5,'DDEBUG') class Loggers(Logger): @@ -17,10 +32,8 @@ class Loggers(Logger): `self.test` per-test log, initially no handler, to be directed to file like `{TEST}.log` - Currently, the logs and fd's get never closed. - - TODO: formatters - WARN: Currently, the module changes fd's 1 and 2, this is a global change. + .. note:: Currently, the logs and fd's get never closed. + .. warning:: `Loggers.open_eval_log` changes global fd's 1 and 2 by default. """ def __init__(self): "Initialize loggers as described in class description." @@ -39,7 +52,7 @@ class Loggers(Logger): self.test_file = None # user progress logger self.user = Logger('user') - self.eval.addHandler(StreamHandler(self.orig_stdout_file)) + self.user.addHandler(StreamHandler(self.orig_stdout_file)) self.addHandler(self.test) self.addHandler(self.eval) @@ -49,20 +62,25 @@ class Loggers(Logger): """Open user (progress) logfile. Leaves logging to stdout active.""" h = StreamHandler(open(filename, 'w', 0)) h.setFormatter(Formatter('%(message)s')) + self.user.setLevel(level) self.user.addHandler(h) self.user.debug('Logging started') def open_eval_log(self, filename, level, redirect_fds = True): - """Open user (progress) logfile. - Leaves logging to stderr active. If told to, redirects fd's 1 and 2 to this file.""" + """Open main logfile. + Leaves logging to stderr active. If told to, redirects fd's 1 and 2 to this file. + Sets level of both `self.eval` and `self`.""" self.eval_file = open(filename, 'w', 0) self.eval_handler = StreamHandler(self.eval_file) - self.eval_handler.setFormatter(Formatter('%(message)s')) - self.user.addHandler(self.eval_handler) + self.eval_handler.setFormatter(Formatter('%(asctime)s [%(levelno)s] %(message)s')) + self.eval.addHandler(self.eval_handler) if redirect_fds: os.dup2(self.eval_file.fileno(), 1) os.dup2(self.eval_file.fileno(), 2) - self.user.debug('Logging started') + self.eval.setLevel(level) + self.setLevel(level) + self.eval.debug('Logging started') + def open_test_log(self, filename, level): """Open per-test log file, like "{TEST}.log". Also set handler level to `level`."""