def test_getLogObserverStdout(self): """ When logfile is empty or set to C{-}, L{app.AppLogger._getLogObserver} returns a log observer pointing at C{sys.stdout}. """ logger = app.AppLogger({"logfile": "-"}) logFiles = _patchFileLogObserver(self.patch) observer = logger._getLogObserver() self.assertEqual(len(logFiles), 1) self.assertIdentical(logFiles[0], sys.stdout) logger = app.AppLogger({"logfile": ""}) observer = logger._getLogObserver() self.assertEqual(len(logFiles), 2) self.assertIdentical(logFiles[1], sys.stdout)
def test_start(self): """ L{app.AppLogger.start} calls L{log.addObserver}, and then writes some messages about twistd and the reactor. """ logger = app.AppLogger({}) observer = [] logger._getLogObserver = lambda: observer.append logger.start(Componentized()) self._checkObserver(observer)
def test_startUsesApplicationLogObserver(self): """ When the L{ILogObserver} component is available on the application, that object will be used as the log observer instead of constructing a new one. """ application = Componentized() logs = [] application.setComponent(ILogObserver, logs.append) logger = app.AppLogger({}) logger.start(application) self._checkObserver(logs)
def test_getLogObserverFile(self): """ When passing the C{logfile} option, L{app.AppLogger._getLogObserver} returns a log observer pointing at the specified path. """ logFiles = _patchFileLogObserver(self.patch) filename = self.mktemp() logger = app.AppLogger({"logfile": filename}) observer = logger._getLogObserver() self.assertEquals(len(logFiles), 1) self.assertEquals(logFiles[0].path, os.path.abspath(filename))
def test_stop(self): """ L{app.AppLogger.stop} removes the observer created in C{start}, and reinitialize its C{_observer} so that if C{stop} is called several times it doesn't break. """ removed = [] observer = object() def remove(observer): removed.append(observer) self.patch(log, 'removeObserver', remove) logger = app.AppLogger({}) logger._observer = observer logger.stop() self.assertEqual(removed, [observer]) logger.stop() self.assertEqual(removed, [observer]) self.assertIdentical(logger._observer, None)
app_name = config.get('application', 'name') application = service.Application(app_name) log_file = config.get('log', 'file') log_path = config.get('log', 'directory') log_level = config.get('log', 'level') logfile = CustomDailyLogFile(log_file, log_path) application.setComponent( ILogObserver, log.FileLogObserver(logfile, log_level, exclude_systems=[]).emit) if __name__ == '__main__': app_config = { 'no_save': True, 'nodaemon': False, 'profile': False, 'debug': False } oldstdout = sys.stdout oldstderr = sys.stderr profiler = app.AppProfiler(app_config) logger = app.AppLogger(app_config) logger.start(application) sys.stdout = oldstdout run_test() logger.stop()