r47012 - tests pass (amazing)
hawkowl-TA+aISz0psMTMxyoc4vAAJOcrHinNvQL0E9HWUfgJXw@public.gmane.org Thu, 17 Mar 2016 09:49:49 -0600 (MDT)
| Newsgroups | gmane.comp.python.twisted.commits |
|---|---|
| Message-ID | <[email protected]> |
Author: hawkowl
Date: Thu Mar 17 09:49:45 2016
New Revision: 47012
Modified:
branches/tlogger-twistd-8235/twisted/application/app.py
branches/tlogger-twistd-8235/twisted/scripts/_twistd_unix.py
branches/tlogger-twistd-8235/twisted/test/test_twistd.py
Log:
tests pass (amazing)
Modified: branches/tlogger-twistd-8235/twisted/application/app.py
==============================================================================
--- branches/tlogger-twistd-8235/twisted/application/app.py (original)
+++ branches/tlogger-twistd-8235/twisted/application/app.py Thu Mar 17 09:49:45 2016
@@ -10,16 +10,17 @@
import getpass
import traceback
import signal
+import warnings
from operator import attrgetter
-from twisted import copyright, plugin
+from twisted import copyright, plugin, logger
from twisted.application import service, reactors
from twisted.internet import defer
from twisted.persisted import sob
from twisted.python import runtime, log, usage, failure, util, logfile
from twisted.logger import (globalLogBeginner, LegacyLogObserverWrapper,
- _logFor, ILogObserver)
+ _logFor, ILogObserver, globalLogPublisher)
from twisted.python.log import ILogObserver as LegacyILogObserver
from twisted.python.reflect import qual, namedAny
@@ -182,7 +183,9 @@
if self._observerFactory is not None:
observer = self._observerFactory()
else:
- observer = application.getComponent(LegacyILogObserver, None)
+ observer = application.getComponent(ILogObserver, None)
+ if observer is None:
+ observer = application.getComponent(LegacyILogObserver, None)
if observer is None:
observer = self._getLogObserver()
@@ -191,6 +194,14 @@
if ILogObserver.providedBy(self._observer):
observers = [self._observer]
else:
+
+ warnings.warn(
+ ("Passing legacy log observers using --logger was deprecated "
+ "in Twisted 16.1. Please use loggers that provide "
+ "twisted.logger.ILogObserver instead."),
+ DeprecationWarning,
+ stacklevel=2)
+
observers = [LegacyLogObserverWrapper(self._observer)]
globalLogBeginner.beginLoggingTo(observers)
@@ -218,16 +229,16 @@
logFile = sys.stdout
else:
logFile = logfile.LogFile.fromFullPath(self._logfilename)
- return log.FileLogObserver(logFile).emit
+ return logger.textFileLogObserver(logFile)
def stop(self):
"""
Remove all log observers previously set up by L{AppLogger.start}.
"""
- log.msg("Server Shut Down.")
+ _logFor(self).info("Server Shut Down.")
if self._observer is not None:
- log.removeObserver(self._observer)
+ globalLogPublisher.removeObserver(self._observer)
self._observer = None
Modified: branches/tlogger-twistd-8235/twisted/scripts/_twistd_unix.py
==============================================================================
--- branches/tlogger-twistd-8235/twisted/scripts/_twistd_unix.py (original)
+++ branches/tlogger-twistd-8235/twisted/scripts/_twistd_unix.py Thu Mar 17 09:49:45 2016
@@ -14,7 +14,7 @@
switchUID, uidFromString, gidFromString, untilConcludes)
from twisted.application import app, service
from twisted.internet.interfaces import IReactorDaemonize
-from twisted import copyright
+from twisted import copyright, logger
from twisted.python.runtime import platformType
@@ -146,8 +146,6 @@
from twisted.python import syslog
return syslog.SyslogObserver(self._syslogPrefix).emit
- from twisted.logger import textFileLogObserver
-
if self._logfilename == '-':
if not self._nodaemon:
sys.exit('Daemons cannot log to stdout, exiting!')
@@ -169,7 +167,7 @@
from twisted.internet import reactor
reactor.callFromThread(logFile.rotate)
signal.signal(signal.SIGUSR1, rotateLog)
- return textFileLogObserver(logFile)
+ return logger.textFileLogObserver(logFile)
Modified: branches/tlogger-twistd-8235/twisted/test/test_twistd.py
==============================================================================
--- branches/tlogger-twistd-8235/twisted/test/test_twistd.py (original)
+++ branches/tlogger-twistd-8235/twisted/test/test_twistd.py Thu Mar 17 09:49:45 2016
@@ -30,19 +30,21 @@
from twisted.trial import unittest
from twisted.test.test_process import MockOS
-from twisted import plugin
+from twisted import plugin, logger
from twisted.application.service import IServiceMaker
from twisted.application import service, app, reactors
from twisted.scripts import twistd
from twisted.python import log
from twisted.python.compat import NativeStringIO
from twisted.python.usage import UsageError
-from twisted.python.log import ILogObserver
+from twisted.python.log import ILogObserver as LegacyILogObserver
from twisted.python.components import Componentized
from twisted.internet.defer import Deferred
from twisted.internet.interfaces import IReactorDaemonize
from twisted.internet.test.modulehelpers import AlternateReactor
from twisted.python.fakepwd import UserDatabase
+from twisted.logger import globalLogBeginner, globalLogPublisher, ILogObserver
+
try:
from twisted.scripts import _twistd_unix
except ImportError:
@@ -1091,10 +1093,10 @@
-def _patchFileLogObserver(patch):
+def _patchTextFileLogObserver(patch):
"""
- Patch L{log.FileLogObserver} to record every call and keep a reference to
- the passed log file for tests.
+ Patch L{logger.textFileLogObserver} to record every call and keep a
+ reference to the passed log file for tests.
@param patch: a callback for patching (usually L{unittest.TestCase.patch}).
@@ -1102,13 +1104,13 @@
@rtype: C{list}
"""
logFiles = []
- oldFileLobObserver = log.FileLogObserver
+ oldFileLogObserver = logger.textFileLogObserver
- def FileLogObserver(logFile):
+ def FileLogObserver(logFile, *args, **kwargs):
logFiles.append(logFile)
- return oldFileLobObserver(logFile)
+ return oldFileLogObserver(logFile, *args, **kwargs)
- patch(log, 'FileLogObserver', FileLogObserver)
+ patch(logger, 'textFileLogObserver', FileLogObserver)
return logFiles
@@ -1147,11 +1149,12 @@
"""
self.observers = []
- def startLoggingWithObserver(observer):
- self.observers.append(observer)
- log.addObserver(observer)
+ def beginLoggingTo(observers):
+ for observer in observers:
+ self.observers.append(observer)
+ globalLogPublisher.addObserver(observer)
- self.patch(log, 'startLoggingWithObserver', startLoggingWithObserver)
+ self.patch(globalLogBeginner, 'beginLoggingTo', beginLoggingTo)
def tearDown(self):
@@ -1159,20 +1162,34 @@
Remove all installed observers.
"""
for observer in self.observers:
- log.removeObserver(observer)
+ globalLogPublisher.removeObserver(observer)
+
+
+ def _makeObserver(self):
+
+ @implementer(ILogObserver)
+ class TestObserver(object):
+
+ _logs = []
+ def __call__(self, event):
+ self._logs.append(event)
- def _checkObserver(self, logs):
+ return TestObserver()
+
+
+ def _checkObserver(self, observer):
"""
Ensure that initial C{twistd} logs are written to the given list.
@type logs: C{list}
@param logs: The list whose C{append} method was specified as the
initial log observer.
+
"""
- self.assertEqual(self.observers, [logs.append])
- self.assertIn("starting up", logs[0]["message"][0])
- self.assertIn("reactor class", logs[1]["message"][0])
+ self.assertEqual(self.observers, [observer])
+ self.assertIn("starting up", observer._logs[0]["log_format"])
+ self.assertIn("reactor class", observer._logs[1]["log_format"])
def test_start(self):
@@ -1181,8 +1198,8 @@
messages about twistd and the reactor.
"""
logger = app.AppLogger({})
- observer = []
- logger._getLogObserver = lambda: observer.append
+ observer = self._makeObserver()
+ logger._getLogObserver = lambda: observer
logger.start(Componentized())
self._checkObserver(observer)
@@ -1194,11 +1211,11 @@
new one.
"""
application = Componentized()
- logs = []
- application.setComponent(ILogObserver, logs.append)
+ observer = self._makeObserver()
+ application.setComponent(ILogObserver, observer)
logger = app.AppLogger({})
logger.start(application)
- self._checkObserver(logs)
+ self._checkObserver(observer)
def _setupConfiguredLogger(self, application, extraLogArgs={},
@@ -1217,12 +1234,12 @@
@rtype: C{list}
@return: The logs accumulated by the log observer.
"""
- logs = []
- logArgs = {"logger": lambda: logs.append}
+ observer = self._makeObserver()
+ logArgs = {"logger": lambda: observer}
logArgs.update(extraLogArgs)
logger = appLogger(logArgs)
logger.start(application)
- return logs
+ return observer
def test_startUsesConfiguredLogObserver(self):
@@ -1284,7 +1301,7 @@
returns a log observer pointing at C{sys.stdout}.
"""
logger = app.AppLogger({"logfile": "-"})
- logFiles = _patchFileLogObserver(self.patch)
+ logFiles = _patchTextFileLogObserver(self.patch)
logger._getLogObserver()
@@ -1303,7 +1320,7 @@
When passing the C{logfile} option, L{app.AppLogger._getLogObserver}
returns a log observer pointing at the specified path.
"""
- logFiles = _patchFileLogObserver(self.patch)
+ logFiles = _patchTextFileLogObserver(self.patch)
filename = self.mktemp()
logger = app.AppLogger({"logfile": filename})
@@ -1326,7 +1343,7 @@
def remove(observer):
removed.append(observer)
- self.patch(log, 'removeObserver', remove)
+ self.patch(globalLogPublisher, 'removeObserver', remove)
logger = app.AppLogger({})
logger._observer = observer
logger.stop()
@@ -1367,7 +1384,7 @@
L{UnixAppLogger._getLogObserver} returns a log observer pointing at
C{sys.stdout}.
"""
- logFiles = _patchFileLogObserver(self.patch)
+ logFiles = _patchTextFileLogObserver(self.patch)
logger = UnixAppLogger({"logfile": "-", "nodaemon": True})
logger._getLogObserver()
@@ -1396,7 +1413,7 @@
returns a log observer pointing at the specified path, and a signal
handler rotating the log is installed.
"""
- logFiles = _patchFileLogObserver(self.patch)
+ logFiles = _patchTextFileLogObserver(self.patch)
filename = self.mktemp()
logger = UnixAppLogger({"logfile": filename})
logger._getLogObserver()
@@ -1441,7 +1458,7 @@
L{UnixAppLogger._getLogObserver} points at C{twistd.log} in the current
directory.
"""
- logFiles = _patchFileLogObserver(self.patch)
+ logFiles = _patchTextFileLogObserver(self.patch)
logger = UnixAppLogger({"logfile": "", "nodaemon": False})
logger._getLogObserver()