Python twisted.python.log.addObserver() Examples
The following are 30
code examples of twisted.python.log.addObserver().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
twisted.python.log
, or try the search function
.
Example #1
Source File: test_static.py From python-for-android with Apache License 2.0 | 6 votes |
def setUp(self): """ Create a temporary file with a fixed payload of 64 bytes. Create a resource for that file and create a request which will be for that resource. Each test can set a different range header to test different aspects of the implementation. """ path = FilePath(self.mktemp()) # This is just a jumble of random stuff. It's supposed to be a good # set of data for this test, particularly in order to avoid # accidentally seeing the right result by having a byte sequence # repeated at different locations or by having byte values which are # somehow correlated with their position in the string. self.payload = ('\xf8u\xf3E\x8c7\xce\x00\x9e\xb6a0y0S\xf0\xef\xac\xb7' '\xbe\xb5\x17M\x1e\x136k{\x1e\xbe\x0c\x07\x07\t\xd0' '\xbckY\xf5I\x0b\xb8\x88oZ\x1d\x85b\x1a\xcdk\xf2\x1d' '&\xfd%\xdd\x82q/A\x10Y\x8b') path.setContent(self.payload) self.file = path.open() self.resource = static.File(self.file.name) self.resource.isLeaf = 1 self.request = DummyRequest(['']) self.request.uri = self.file.name self.catcher = [] log.addObserver(self.catcher.append)
Example #2
Source File: test_log.py From python-for-android with Apache License 2.0 | 6 votes |
def test_startLoggingTwice(self): """ There are some obscure error conditions that can occur when logging is started twice. See http://twistedmatrix.com/trac/ticket/3289 for more information. """ # The bug is particular to the way that the t.p.log 'global' function # handle stdout. If we use our own stream, the error doesn't occur. If # we use our own LogPublisher, the error doesn't occur. sys.stdout = StringIO() self.addCleanup(setattr, sys, 'stdout', sys.__stdout__) def showError(eventDict): if eventDict['isError']: sys.__stdout__.write(eventDict['failure'].getTraceback()) log.addObserver(showError) self.addCleanup(log.removeObserver, showError) observer = log.startLogging(sys.stdout) self.addCleanup(observer.stop) # At this point, we expect that sys.stdout is a StdioOnnaStick object. self.assertIsInstance(sys.stdout, log.StdioOnnaStick) fakeStdout = sys.stdout observer = log.startLogging(sys.stdout) self.assertIdentical(sys.stdout, fakeStdout)
Example #3
Source File: test_tls.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_quiet(self): """ L{TLSMemoryBIOFactory.doStart} and L{TLSMemoryBIOFactory.doStop} do not log any messages. """ contextFactory = ServerTLSContext() logs = [] logger = logs.append log.addObserver(logger) self.addCleanup(log.removeObserver, logger) wrappedFactory = ServerFactory() # Disable logging on the wrapped factory: wrappedFactory.doStart = lambda: None wrappedFactory.doStop = lambda: None factory = TLSMemoryBIOFactory(contextFactory, False, wrappedFactory) factory.doStart() factory.doStop() self.assertEqual(logs, [])
Example #4
Source File: test_newclient.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_errorMessageOnConnectionLostBeforeGenerationFailedDoesNotConfuse(self): """ If the request passed to L{HTTP11ClientProtocol} finished generation with an error after the L{HTTP11ClientProtocol}'s connection has been lost, an error is logged that gives a non-confusing hint to user on what went wrong. """ errors = [] log.addObserver(errors.append) self.addCleanup(log.removeObserver, errors.append) def check(ignore): error = errors[0] self.assertEqual(error[u'why'], u'Error writing request, but not in valid state ' u'to finalize request: CONNECTION_LOST') return self.test_connectionLostDuringRequestGeneration( 'errback').addCallback(check)
Example #5
Source File: test_log.py From python-for-android with Apache License 2.0 | 6 votes |
def setUp(self): """ Add a log observer which records log events in C{self.out}. Also, make sure the default string encoding is ASCII so that L{testSingleUnicode} can test the behavior of logging unencodable unicode messages. """ self.out = FakeFile() self.lp = log.LogPublisher() self.flo = log.FileLogObserver(self.out) self.lp.addObserver(self.flo.emit) try: str(u'\N{VULGAR FRACTION ONE HALF}') except UnicodeEncodeError: # This is the behavior we want - don't change anything. self._origEncoding = None else: reload(sys) self._origEncoding = sys.getdefaultencoding() sys.setdefaultencoding('ascii')
Example #6
Source File: test_log.py From python-for-android with Apache License 2.0 | 6 votes |
def test_startStopObserver(self): """ Test that start and stop methods of the observer actually register and unregister to the log system. """ oldAddObserver = log.addObserver oldRemoveObserver = log.removeObserver l = [] try: log.addObserver = l.append log.removeObserver = l.remove obs = log.PythonLoggingObserver() obs.start() self.assertEquals(l[0], obs.emit) obs.stop() self.assertEquals(len(l), 0) finally: log.addObserver = oldAddObserver log.removeObserver = oldRemoveObserver
Example #7
Source File: test_defer.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_logErrorLogsErrorNoRepr(self): """ The text logged by L{defer.logError} has no repr of the failure. """ output = [] def emit(eventDict): output.append(log.textFromEventDict(eventDict)) log.addObserver(emit) error = failure.Failure(RuntimeError()) defer.logError(error) self.flushLoggedErrors(RuntimeError) self.assertTrue(output[0].startswith("Unhandled Error\nTraceback "))
Example #8
Source File: test_endpoints.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_logStderr(self): """ When the _errFlag is set to L{StandardErrorBehavior.LOG}, L{endpoints._WrapIProtocol} logs stderr (in childDataReceived). """ d = self.ep.connect(self.factory) self.successResultOf(d) wpp = self.reactor.processProtocol log.addObserver(self._stdLog) self.addCleanup(log.removeObserver, self._stdLog) wpp.childDataReceived(2, b'stderr1') self.assertEqual(self.eventLog['executable'], wpp.executable) self.assertEqual(self.eventLog['data'], b'stderr1') self.assertEqual(self.eventLog['protocol'], wpp.protocol) self.assertIn( 'wrote stderr unhandled by', log.textFromEventDict(self.eventLog))
Example #9
Source File: test_log.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_emitNewline(self): """ FileLogObserver.emit() will append a newline to its file output. """ output = StringIO() flo = log.FileLogObserver(output) publisher = log.LogPublisher() publisher.addObserver(flo.emit) publisher.msg("Hello!") result = output.getvalue() suffix = "Hello!\n" self.assertTrue( result.endswith(suffix), "{0!r} does not end with {1!r}".format(result, suffix) )
Example #10
Source File: test_log.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def setUp(self): rootLogger = logging.getLogger("") originalLevel = rootLogger.getEffectiveLevel() rootLogger.setLevel(logging.DEBUG) @self.addCleanup def restoreLevel(): rootLogger.setLevel(originalLevel) self.hdlr, self.out = handlerAndBytesIO() rootLogger.addHandler(self.hdlr) @self.addCleanup def removeLogger(): rootLogger.removeHandler(self.hdlr) self.hdlr.close() self.lp = log.LogPublisher() self.obs = log.PythonLoggingObserver() self.lp.addObserver(self.obs.emit)
Example #11
Source File: test_log.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_startStopObserver(self): """ Test that start and stop methods of the observer actually register and unregister to the log system. """ oldAddObserver = log.addObserver oldRemoveObserver = log.removeObserver l = [] try: log.addObserver = l.append log.removeObserver = l.remove obs = log.PythonLoggingObserver() obs.start() self.assertEqual(l[0], obs.emit) obs.stop() self.assertEqual(len(l), 0) finally: log.addObserver = oldAddObserver log.removeObserver = oldRemoveObserver
Example #12
Source File: test_newclient.py From python-for-android with Apache License 2.0 | 6 votes |
def test_errorMessageOnConnectionLostBeforeGenerationFailedDoesNotConfuse(self): """ If the request passed to L{HTTP11ClientProtocol} finished generation with an error after the L{HTTP11ClientProtocol}'s connection has been lost, an error is logged that gives a non-confusing hint to user on what went wrong. """ errors = [] log.addObserver(errors.append) self.addCleanup(log.removeObserver, errors.append) def check(ignore): error = errors[0] self.assertEquals(error['why'], 'Error writing request, but not in valid state ' 'to finalize request: CONNECTION_LOST') return self.test_connectionLostDuringRequestGeneration( 'errback').addCallback(check)
Example #13
Source File: test_procmon.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_outputReceivedCompleteLine(self): """ Getting a complete output line generates a log message. """ events = [] self.addCleanup(log.removeObserver, events.append) log.addObserver(events.append) self.pm.addProcess("foo", ["foo"]) # Schedule the process to start self.pm.startService() # Advance the reactor to start the process self.reactor.advance(0) self.assertIn("foo", self.pm.protocols) # Long time passes self.reactor.advance(self.pm.threshold) # Process greets self.pm.protocols["foo"].outReceived(b'hello world!\n') self.assertEquals(len(events), 1) message = events[0]['message'] self.assertEquals(message, tuple([u'[foo] hello world!']))
Example #14
Source File: test_procmon.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_outputReceivedCompleteLineInvalidUTF8(self): """ Getting invalid UTF-8 results in the repr of the raw message """ events = [] self.addCleanup(log.removeObserver, events.append) log.addObserver(events.append) self.pm.addProcess("foo", ["foo"]) # Schedule the process to start self.pm.startService() # Advance the reactor to start the process self.reactor.advance(0) self.assertIn("foo", self.pm.protocols) # Long time passes self.reactor.advance(self.pm.threshold) # Process greets self.pm.protocols["foo"].outReceived(b'\xffhello world!\n') self.assertEquals(len(events), 1) messages = events[0]['message'] self.assertEquals(len(messages), 1) message = messages[0] tag, output = message.split(' ', 1) self.assertEquals(tag, '[foo]') self.assertEquals(output, repr(b'\xffhello world!'))
Example #15
Source File: test_procmon.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def test_outputReceivedPartialLine(self): """ Getting partial line results in no events until process end """ events = [] self.addCleanup(log.removeObserver, events.append) log.addObserver(events.append) self.pm.addProcess("foo", ["foo"]) # Schedule the process to start self.pm.startService() # Advance the reactor to start the process self.reactor.advance(0) self.assertIn("foo", self.pm.protocols) # Long time passes self.reactor.advance(self.pm.threshold) # Process greets self.pm.protocols["foo"].outReceived(b'hello world!') self.assertEquals(len(events), 0) self.pm.protocols["foo"].processEnded(Failure(ProcessDone(0))) self.assertEquals(len(events), 1) message = events[0]['message'] self.assertEquals(message, tuple([u'[foo] hello world!']))
Example #16
Source File: test_static.py From Safejumper-for-Desktop with GNU General Public License v2.0 | 6 votes |
def setUp(self): """ Create a temporary file with a fixed payload of 64 bytes. Create a resource for that file and create a request which will be for that resource. Each test can set a different range header to test different aspects of the implementation. """ path = FilePath(self.mktemp()) # This is just a jumble of random stuff. It's supposed to be a good # set of data for this test, particularly in order to avoid # accidentally seeing the right result by having a byte sequence # repeated at different locations or by having byte values which are # somehow correlated with their position in the string. self.payload = (b'\xf8u\xf3E\x8c7\xce\x00\x9e\xb6a0y0S\xf0\xef\xac\xb7' b'\xbe\xb5\x17M\x1e\x136k{\x1e\xbe\x0c\x07\x07\t\xd0' b'\xbckY\xf5I\x0b\xb8\x88oZ\x1d\x85b\x1a\xcdk\xf2\x1d' b'&\xfd%\xdd\x82q/A\x10Y\x8b') path.setContent(self.payload) self.file = path.open() self.resource = static.File(self.file.name) self.resource.isLeaf = 1 self.request = DummyRequest([b'']) self.request.uri = self.file.name self.catcher = [] log.addObserver(self.catcher.append)
Example #17
Source File: test_procmon.py From learn_python3_spider with MIT License | 6 votes |
def test_outputReceivedPartialLine(self): """ Getting partial line results in no events until process end """ events = [] self.addCleanup(log.removeObserver, events.append) log.addObserver(events.append) self.pm.addProcess("foo", ["foo"]) # Schedule the process to start self.pm.startService() # Advance the reactor to start the process self.reactor.advance(0) self.assertIn("foo", self.pm.protocols) # Long time passes self.reactor.advance(self.pm.threshold) # Process greets self.pm.protocols["foo"].outReceived(b'hello world!') self.assertEquals(len(events), 0) self.pm.protocols["foo"].processEnded(Failure(ProcessDone(0))) self.assertEquals(len(events), 1) message = events[0]['message'] self.assertEquals(message, tuple([u'[foo] hello world!']))
Example #18
Source File: test_procmon.py From learn_python3_spider with MIT License | 6 votes |
def test_outputReceivedCompleteLineInvalidUTF8(self): """ Getting invalid UTF-8 results in the repr of the raw message """ events = [] self.addCleanup(log.removeObserver, events.append) log.addObserver(events.append) self.pm.addProcess("foo", ["foo"]) # Schedule the process to start self.pm.startService() # Advance the reactor to start the process self.reactor.advance(0) self.assertIn("foo", self.pm.protocols) # Long time passes self.reactor.advance(self.pm.threshold) # Process greets self.pm.protocols["foo"].outReceived(b'\xffhello world!\n') self.assertEquals(len(events), 1) messages = events[0]['message'] self.assertEquals(len(messages), 1) message = messages[0] tag, output = message.split(' ', 1) self.assertEquals(tag, '[foo]') self.assertEquals(output, repr(b'\xffhello world!'))
Example #19
Source File: test_procmon.py From learn_python3_spider with MIT License | 6 votes |
def test_outputReceivedCompleteLine(self): """ Getting a complete output line generates a log message. """ events = [] self.addCleanup(log.removeObserver, events.append) log.addObserver(events.append) self.pm.addProcess("foo", ["foo"]) # Schedule the process to start self.pm.startService() # Advance the reactor to start the process self.reactor.advance(0) self.assertIn("foo", self.pm.protocols) # Long time passes self.reactor.advance(self.pm.threshold) # Process greets self.pm.protocols["foo"].outReceived(b'hello world!\n') self.assertEquals(len(events), 1) message = events[0]['message'] self.assertEquals(message, tuple([u'[foo] hello world!']))
Example #20
Source File: test_static.py From learn_python3_spider with MIT License | 6 votes |
def setUp(self): """ Create a temporary file with a fixed payload of 64 bytes. Create a resource for that file and create a request which will be for that resource. Each test can set a different range header to test different aspects of the implementation. """ path = FilePath(self.mktemp()) # This is just a jumble of random stuff. It's supposed to be a good # set of data for this test, particularly in order to avoid # accidentally seeing the right result by having a byte sequence # repeated at different locations or by having byte values which are # somehow correlated with their position in the string. self.payload = (b'\xf8u\xf3E\x8c7\xce\x00\x9e\xb6a0y0S\xf0\xef\xac\xb7' b'\xbe\xb5\x17M\x1e\x136k{\x1e\xbe\x0c\x07\x07\t\xd0' b'\xbckY\xf5I\x0b\xb8\x88oZ\x1d\x85b\x1a\xcdk\xf2\x1d' b'&\xfd%\xdd\x82q/A\x10Y\x8b') path.setContent(self.payload) self.file = path.open() self.resource = static.File(self.file.name) self.resource.isLeaf = 1 self.request = DummyRequest([b'']) self.request.uri = self.file.name self.catcher = [] log.addObserver(self.catcher.append)
Example #21
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def test_failureLogger(self): """ The reason argument passed to log.err() appears in the report generated by DefaultObserver. """ self.catcher = [] self.observer = self.catcher.append log.addObserver(self.observer) self.addCleanup(log.removeObserver, self.observer) obs = log.DefaultObserver() obs.stderr = StringIO() obs.start() self.addCleanup(obs.stop) reason = "The reason." log.err(Exception(), reason) errors = self.flushLoggedErrors() self.assertIn(reason, obs.stderr.getvalue()) self.assertEqual(len(errors), 1)
Example #22
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def test_startStopObserver(self): """ Test that start and stop methods of the observer actually register and unregister to the log system. """ oldAddObserver = log.addObserver oldRemoveObserver = log.removeObserver l = [] try: log.addObserver = l.append log.removeObserver = l.remove obs = log.PythonLoggingObserver() obs.start() self.assertEqual(l[0], obs.emit) obs.stop() self.assertEqual(len(l), 0) finally: log.addObserver = oldAddObserver log.removeObserver = oldRemoveObserver
Example #23
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def setUp(self): rootLogger = logging.getLogger("") originalLevel = rootLogger.getEffectiveLevel() rootLogger.setLevel(logging.DEBUG) @self.addCleanup def restoreLevel(): rootLogger.setLevel(originalLevel) self.hdlr, self.out = handlerAndBytesIO() rootLogger.addHandler(self.hdlr) @self.addCleanup def removeLogger(): rootLogger.removeHandler(self.hdlr) self.hdlr.close() self.lp = log.LogPublisher() self.obs = log.PythonLoggingObserver() self.lp.addObserver(self.obs.emit)
Example #24
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def test_emitNewline(self): """ FileLogObserver.emit() will append a newline to its file output. """ output = StringIO() flo = log.FileLogObserver(output) publisher = log.LogPublisher() publisher.addObserver(flo.emit) publisher.msg("Hello!") result = output.getvalue() suffix = "Hello!\n" self.assertTrue( result.endswith(suffix), "{0!r} does not end with {1!r}".format(result, suffix) )
Example #25
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def test_startLoggingTwice(self): """ There are some obscure error conditions that can occur when logging is started twice. See http://twistedmatrix.com/trac/ticket/3289 for more information. """ self._startLoggingCleanup() # The bug is particular to the way that the t.p.log 'global' function # handle stdout. If we use our own stream, the error doesn't occur. If # we use our own LogPublisher, the error doesn't occur. sys.stdout = StringIO() def showError(eventDict): if eventDict['isError']: sys.__stdout__.write(eventDict['failure'].getTraceback()) log.addObserver(showError) self.addCleanup(log.removeObserver, showError) observer = log.startLogging(sys.stdout) self.addCleanup(observer.stop) # At this point, we expect that sys.stdout is a StdioOnnaStick object. self.assertIsInstance(sys.stdout, LoggingFile) fakeStdout = sys.stdout observer = log.startLogging(sys.stdout) self.assertIs(sys.stdout, fakeStdout)
Example #26
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def test_printToStderrSetsIsError(self): """ startLogging()'s overridden sys.stderr should consider everything written to it an error. """ self._startLoggingCleanup() fakeFile = StringIO() log.startLogging(fakeFile) def observe(event): observed.append(event) observed = [] log.addObserver(observe) print("Hello, world.", file=sys.stderr) self.assertEqual(observed[0]["isError"], 1)
Example #27
Source File: test_tls.py From learn_python3_spider with MIT License | 6 votes |
def test_quiet(self): """ L{TLSMemoryBIOFactory.doStart} and L{TLSMemoryBIOFactory.doStop} do not log any messages. """ contextFactory = ServerTLSContext() logs = [] logger = logs.append log.addObserver(logger) self.addCleanup(log.removeObserver, logger) wrappedFactory = ServerFactory() # Disable logging on the wrapped factory: wrappedFactory.doStart = lambda: None wrappedFactory.doStop = lambda: None factory = TLSMemoryBIOFactory(contextFactory, False, wrappedFactory) factory.doStart() factory.doStop() self.assertEqual(logs, [])
Example #28
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def setUp(self): """ Add a log observer which records log events in C{self.out}. Also, make sure the default string encoding is ASCII so that L{testSingleUnicode} can test the behavior of logging unencodable unicode messages. """ self.out = FakeFile() self.lp = log.LogPublisher() self.flo = log.FileLogObserver(self.out) self.lp.addObserver(self.flo.emit) try: str(u'\N{VULGAR FRACTION ONE HALF}') except UnicodeEncodeError: # This is the behavior we want - don't change anything. self._origEncoding = None else: if _PY3: self._origEncoding = None return reload(sys) self._origEncoding = sys.getdefaultencoding() sys.setdefaultencoding('ascii')
Example #29
Source File: test_defer.py From learn_python3_spider with MIT License | 6 votes |
def test_logErrorLogsErrorNoRepr(self): """ The text logged by L{defer.logError} has no repr of the failure. """ output = [] def emit(eventDict): output.append(log.textFromEventDict(eventDict)) log.addObserver(emit) error = failure.Failure(RuntimeError()) defer.logError(error) self.flushLoggedErrors(RuntimeError) self.assertTrue(output[0].startswith("Unhandled Error\nTraceback "))
Example #30
Source File: test_log.py From learn_python3_spider with MIT License | 6 votes |
def test_publisherReportsBrokenObserversPrivately(self): """ Log publisher does not use the global L{log.err} when reporting broken observers. """ errors = [] def logError(eventDict): if eventDict.get("isError"): errors.append(eventDict["failure"].value) def fail(eventDict): raise RuntimeError("test_publisherLocalyReportsBrokenObservers") publisher = log.LogPublisher() publisher.addObserver(logError) publisher.addObserver(fail) publisher.msg("Hello!") self.assertEqual(set(publisher.observers), set([logError, fail])) self.assertEqual(len(errors), 1) self.assertIsInstance(errors[0], RuntimeError)