From 69338434ac4bdab0eed3edc4921a615e8a4353c0 Mon Sep 17 00:00:00 2001 From: Olli Graf Date: Mon, 7 Oct 2024 12:04:38 +0200 Subject: [PATCH] filterlogging.py mit log_config.json --- logging-config/.gitignore | 3 +++ logging-config/filterlogging.py | 37 +++++++++++++++++++++++++++++++ logging-config/log_config.json | 35 +++++++++++++++++++++++++++++ logging-config/test | 0 logging-config/testloggingconf.py | 8 ------- teil16/.gitignore | 2 +- 6 files changed, 76 insertions(+), 9 deletions(-) create mode 100644 logging-config/.gitignore create mode 100644 logging-config/filterlogging.py create mode 100644 logging-config/log_config.json delete mode 100644 logging-config/test diff --git a/logging-config/.gitignore b/logging-config/.gitignore new file mode 100644 index 0000000..5a79b2d --- /dev/null +++ b/logging-config/.gitignore @@ -0,0 +1,3 @@ +example.py +ex2.py +*.log diff --git a/logging-config/filterlogging.py b/logging-config/filterlogging.py new file mode 100644 index 0000000..bf9f9e6 --- /dev/null +++ b/logging-config/filterlogging.py @@ -0,0 +1,37 @@ +import logging +from logging import config +import json + +# Filter definieren +class DruckFilter(logging.Filter): + + def __init__(self, params=None): + self.param = params + print('Druckfilter initialisiert') + + def filter(self, record:logging.LogRecord)-> bool| logging.LogRecord: + +# nur Text, der das Wort Druck enthält soll geloggt werden. + return record.getMessage().lower().find('druck') > -1 + + +# Config aus JSON Datei laden und setzen + +with open('log_config.json') as file_config: + config.dictConfig(json.load(file_config)) + + +# Logging testen +def testlogging(): + print('testlogging() aufgerufen.') + logging.debug('Diese Zeile wird ausgefiltert.') + logging.debug('DEBUG/Druckdaten werden gesendet.') + logging.info('INFO/Es werden 2 Seiten gedruckt') + logging.debug('Diese Zeile wird auch ausgefiltert.') + logging.warning('WARN/nicht genügend Papier im Drucker') + logging.error('ERROR/Drucker nicht gefunden.') + logging.critical('CRITICAL/Drucker brennt') + +if __name__ == '__main__': + testlogging() + diff --git a/logging-config/log_config.json b/logging-config/log_config.json new file mode 100644 index 0000000..51160f7 --- /dev/null +++ b/logging-config/log_config.json @@ -0,0 +1,35 @@ +{ + "version":1, + "filters": { + "drucker":{ + "()": "__main__.DruckFilter", + "params": "noshow" + } + }, + "formatters":{ + "std_out":{ + "format": "%(asctime)s : %(levelname)s : %(module)s : %(funcName)s : %(lineno)d : (Process Details : (%(process)d, %(processName)s), Thread Details : (%(thread)d, %(threadName)s))\nLog : %(message)s", + "datefmt":"%d-%m-%Y %I:%M:%S" + } + }, + "handlers":{ + "console":{ + "formatter": "std_out", + "class": "logging.StreamHandler", + "level": "DEBUG", + "filters": ["drucker"] + }, + "file":{ + "formatter":"std_out", + "class":"logging.FileHandler", + "level":"DEBUG", + "filename" : "raspithek.log" + } + }, + "root":{ + "handlers":["console","file"], + "level": "DEBUG" + } + +} + diff --git a/logging-config/test b/logging-config/test deleted file mode 100644 index e69de29..0000000 diff --git a/logging-config/testloggingconf.py b/logging-config/testloggingconf.py index 10c7e9a..febda88 100644 --- a/logging-config/testloggingconf.py +++ b/logging-config/testloggingconf.py @@ -24,14 +24,6 @@ log_config = { "level":"DEBUG", "filename":"raspithek.log" }, -# Handler für rotierende Logfiles - "rotating": { - "formater":"std_out", - "class": 'logging.handlers.RotatingFileHandler', - "filename": 'logs/random.log', - "maxBytes": 10240 - 'backupCount': 3 - } }, # Format einer Logzeile diff --git a/teil16/.gitignore b/teil16/.gitignore index c7fb3aa..5a73591 100644 --- a/teil16/.gitignore +++ b/teil16/.gitignore @@ -1,2 +1,2 @@ -./__pycache__ +__pycache__ ./network/__pycache__/*