Add logging.

This commit is contained in:
Schimon Jehudah, Adv. 2025-03-10 10:35:21 +02:00
parent 2103b061a2
commit 3fa7aa9b40
4 changed files with 512 additions and 93 deletions

View file

@ -15,8 +15,8 @@ import argparse
from blasta.config import Cache, Settings, Share
from blasta.http.instance import HttpInstance
from blasta.database.sqlite import DatabaseSQLite
from blasta.utilities.logger import UtilitiesLogger
import json
import logging
import os
from os.path import getsize, exists
import shutil
@ -80,9 +80,38 @@ if __name__ == 'blasta.__main__':
usage='%(prog)s [OPTION]...')
parser.add_argument('-v', '--version', help='print version',
action='version', version='0.1')
# Setup the command line arguments.
parser.add_argument('-p', '--port', help='port number', dest='port')
parser.add_argument('-o', '--open', help='open an html browser', action='store_const', const=True, dest='open')
parser.add_argument('--no-log', '--nolog', help='Do not create a log file',
action='store_const', dest='nolog',
const=True, default=False)
# Output verbosity options.
parser.add_argument('-d', '--debug', help='set logging to DEBUG',
action='store_const', dest='loglevel',
const='debug', default='info')
parser.add_argument('-q', '--quiet', help='set logging to ERROR',
action='store_const', dest='loglevel',
const='error', default='info')
parser.add_argument('-w', '--warning', help='set logging to WARNING',
action='store_const', dest='loglevel',
const='warn', default='info')
args = parser.parse_args()
filename_log = os.path.join(directory_cache, 'blasta_log.csv')
filename_log_old = os.path.join(directory_cache, 'blasta_log.csv.old')
if os.path.exists(filename_log): os.rename(filename_log, filename_log_old)
loglevel = args.loglevel
logger = UtilitiesLogger('blasta')
if not args.nolog:
logger.set_filename(filename_log)
with open(filename_log, 'a') as file:
file.write('Time,,Level,Module,Function,JID/Path,Message\n')
logger.set_level(loglevel)
port = int(args.port or 8000)
app = main()

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,75 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from datetime import datetime
import logging
class UtilitiesLogger:
def __init__(self, name):
self.logger = logging.getLogger(name)
def set_level(self, loglevel):
match loglevel:
case 'debug':
level = logging.DEBUG
case 'error':
level = logging.ERROR
case 'info':
level = logging.INFO
case 'warning':
level = logging.WARNING
case _:
level = logging.NOTSET
self.logger.setLevel(level)
console_handler = logging.StreamHandler()
console_handler.setLevel(level)
formatter = logging.Formatter('[%(asctime)s] %(levelname)s:%(name)s:%(message)s')
console_handler.setFormatter(formatter)
# Add the console handler only if there are no handlers already
if not self.logger.handlers:
self.logger.addHandler(console_handler)
def set_filename(self, filename):
file_handler = logging.FileHandler(filename)
file_handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s,%(levelname)s,%(name)s,%(message)s')
file_handler.setFormatter(formatter)
# Add the console handler only if there are no handlers already
if not self.logger.handlers:
self.logger.addHandler(file_handler)
def debug(self, message):
self.logger.debug(message)
def info(self, message):
self.logger.info(message)
def warning(self, message):
self.logger.warning(message)
def error(self, message):
self.logger.error(message)
def critical(self, message):
self.logger.critical(message)
# Example usage:
# logger = Logger('my_logger')
# logger.set_level('debug')
# logger.debug('This is a debug message.')
class Message:
def printer(text):
now = datetime.now()
current_time = now.strftime("%H:%M:%S")
# print('{} {}'.format(current_time, text), end='\r')
print('{} {}'.format(current_time, text))

View file

@ -1,13 +1,20 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
from blasta.utilities.logger import UtilitiesLogger
from slixmpp import ClientXMPP
import sys
logger = UtilitiesLogger(__name__)
class XmppInstance(ClientXMPP):
def __init__(self, jid, password):
function_name = sys._getframe().f_code.co_name
logger.debug(f'{function_name},{jid},Start')
super().__init__(jid, password)
#self.add_event_handler("connection_failed", self.on_connection_failed)
#self.add_event_handler("failed_auth", self.on_failed_auth)
self.add_event_handler("connection_failed", self.on_connection_failed)
self.add_event_handler("failed_auth", self.on_failed_auth)
self.add_event_handler("session_start", self.on_session_start)
self.register_plugin('xep_0004') # XEP-0004: Data Forms
self.register_plugin('xep_0030') # XEP-0030: Service Discovery
@ -17,15 +24,22 @@ class XmppInstance(ClientXMPP):
self.register_plugin('xep_0163') # XEP-0163: Personal Eventing Protocol
self.register_plugin('xep_0223') # XEP-0223: Persistent Storage of Private Data via PubSub
self.connect()
# self.process(forever=False)
self.connection_accepted = False
# def on_connection_failed(self, event):
# self.connection_accepted = False
def on_connection_failed(self, event):
function_name = sys._getframe().f_code.co_name
logger.debug(f'{function_name},{event},Start')
self.connection_accepted = False
logger.debug(f'{function_name},{event},Finish')
# def on_failed_auth(self, event):
# self.connection_accepted = False
def on_failed_auth(self, event):
function_name = sys._getframe().f_code.co_name
logger.debug(f'{function_name},{event},Start')
self.connection_accepted = False
logger.debug(f'{function_name},{event},Finish')
def on_session_start(self, event):
function_name = sys._getframe().f_code.co_name
logger.debug(f'{function_name},{event},Start')
self.connection_accepted = True
logger.debug(f'{function_name},{event},Finish')