# -*- test-case-name: twisted.logger.test.test_file -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ File log observer. """ from zope.interface import implementer from twisted.python.compat import ioType, unicode from ._observer import ILogObserver from ._format import formatTime from ._format import timeFormatRFC3339 from ._format import formatEventAsClassicLogText @implementer(ILogObserver) class FileLogObserver(object): """ Log observer that writes to a file-like object. """ def __init__(self, outFile, formatEvent): """ @param outFile: A file-like object. Ideally one should be passed which accepts L{unicode} data. Otherwise, UTF-8 L{bytes} will be used. @type outFile: L{io.IOBase} @param formatEvent: A callable that formats an event. @type formatEvent: L{callable} that takes an C{event} argument and returns a formatted event as L{unicode}. """ if ioType(outFile) is not unicode: self._encoding = "utf-8" else: self._encoding = None self._outFile = outFile self.formatEvent = formatEvent def __call__(self, event): """ Write event to file. @param event: An event. @type event: L{dict} """ text = self.formatEvent(event) if text is None: text = u"" if self._encoding is not None: text = text.encode(self._encoding) if text: self._outFile.write(text) self._outFile.flush() def textFileLogObserver(outFile, timeFormat=timeFormatRFC3339): """ Create a L{FileLogObserver} that emits text to a specified (writable) file-like object. @param outFile: A file-like object. Ideally one should be passed which accepts L{unicode} data. Otherwise, UTF-8 L{bytes} will be used. @type outFile: L{io.IOBase} @param timeFormat: The format to use when adding timestamp prefixes to logged events. If L{None}, or for events with no C{"log_timestamp"} key, the default timestamp prefix of C{u"-"} is used. @type timeFormat: L{unicode} or L{None} @return: A file log observer. @rtype: L{FileLogObserver} """ def formatEvent(event): return formatEventAsClassicLogText( event, formatTime=lambda e: formatTime(e, timeFormat) ) return FileLogObserver(outFile, formatEvent)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
test | Folder | 0755 |
|
|
__init__.py | File | 3.13 KB | 0644 |
|
_buffer.py | File | 1.45 KB | 0644 |
|
_file.py | File | 2.43 KB | 0644 |
|
_filter.py | File | 6.83 KB | 0644 |
|
_flatten.py | File | 4.97 KB | 0644 |
|
_format.py | File | 8.22 KB | 0644 |
|
_global.py | File | 8.43 KB | 0644 |
|
_io.py | File | 4.35 KB | 0644 |
|
_json.py | File | 9.83 KB | 0644 |
|
_legacy.py | File | 5.11 KB | 0644 |
|
_levels.py | File | 3.68 KB | 0644 |
|
_logger.py | File | 9.03 KB | 0644 |
|
_observer.py | File | 4.87 KB | 0644 |
|
_stdlib.py | File | 4.3 KB | 0644 |
|
_util.py | File | 1.3 KB | 0644 |
|