Source code for datalogd.plugins.logging_datasink
import logging
from datalogd import DataSink, listify
[docs]class LoggingDataSink(DataSink):
"""
Output data using python's :mod:`logging` system.
Each item of data is output in a separate line, and the formatting can be
controlled using the ``header`` and ``indent`` parameters.
:param level: The `logging level <https://docs.python.org/3/library/logging.html#logging-levels>`_ to use for the output.
:param header: Line of header text preceeding the logged data.
:param indent: Prefix applied to each line of logged data.
"""
def __init__(self, level=logging.INFO, header="Data received:", indent=" "):
self.log = logging.getLogger("LoggingDataSink")
self.level = level
self.header = header
self.indent = indent
[docs] def receive(self, data):
"""
Accept the provided data and output it using python's :mod:`logging`
system.
:param data: Data to log.
"""
if data is None or data == []: return
data = listify(data)
if self.header: self.log.log(self.level, self.header)
for d in data:
self.log.log(self.level, f"{self.indent}{d}")