From 259ab76cba22d3453e9a855f30343d3157db1fd2 Mon Sep 17 00:00:00 2001 From: Timofey Mazurov Date: Wed, 17 Mar 2021 03:13:37 +0300 Subject: [PATCH] Added csv file logging --- .gitignore | 1 + main/extra_func.py | 32 +++++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index d798070..6b6423b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ local_settings.py db.sqlite3 db.sqlite3-journal media/ +logs.csv # If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/ # in your Git repository. Update and uncomment the following line accordingly. diff --git a/main/extra_func.py b/main/extra_func.py index eedc4aa..3829e64 100644 --- a/main/extra_func.py +++ b/main/extra_func.py @@ -393,9 +393,7 @@ class DatabaseHandler(logging.Handler): self.database = RoleChangeLogs() def emit(self, record): - # admin = ZendeskAdmin() user = record.msg - # data = UserProfile.objects.filter(user=user.user) self.database.name = user.name self.database.user = user.user self.database.changed_by = user.user @@ -407,9 +405,37 @@ class DatabaseHandler(logging.Handler): self.database.save() +class CsvFormatter(logging.Formatter): + def __init__(self): + logging.Formatter.__init__(self) + + def format(self, record): + user = record.msg + msg = '' + msg += user.name + if user.custom_role_id == ROLES['engineer']: + msg += ',engineer,' + elif user.custom_role_id == ROLES['light_agent']: + msg.append('light_agent') + time = str(timezone.now().today()) + msg += time[:16] + msg += ',' + msg += user.name + return msg + + def log(user): + """ + Осуществляет запись логов в базу данных и csv файл + :param user: request.user.userprofile + :return: + """ dbhandler = DatabaseHandler() - logging.getLogger('MY_LOGGER').addHandler(dbhandler) + csvformatter = CsvFormatter() + csvhandler = logging.FileHandler('logs.csv', "a") + csvhandler.setFormatter(csvformatter) logger = logging.getLogger('MY_LOGGER') + logger.addHandler(dbhandler) + logger.addHandler(csvhandler) logger.setLevel('INFO') logger.info(user)