Add logging.
This commit is contained in:
parent
2103b061a2
commit
3fa7aa9b40
4 changed files with 512 additions and 93 deletions
blasta
|
@ -15,8 +15,8 @@ import argparse
|
||||||
from blasta.config import Cache, Settings, Share
|
from blasta.config import Cache, Settings, Share
|
||||||
from blasta.http.instance import HttpInstance
|
from blasta.http.instance import HttpInstance
|
||||||
from blasta.database.sqlite import DatabaseSQLite
|
from blasta.database.sqlite import DatabaseSQLite
|
||||||
|
from blasta.utilities.logger import UtilitiesLogger
|
||||||
import json
|
import json
|
||||||
import logging
|
|
||||||
import os
|
import os
|
||||||
from os.path import getsize, exists
|
from os.path import getsize, exists
|
||||||
import shutil
|
import shutil
|
||||||
|
@ -80,9 +80,38 @@ if __name__ == 'blasta.__main__':
|
||||||
usage='%(prog)s [OPTION]...')
|
usage='%(prog)s [OPTION]...')
|
||||||
parser.add_argument('-v', '--version', help='print version',
|
parser.add_argument('-v', '--version', help='print version',
|
||||||
action='version', version='0.1')
|
action='version', version='0.1')
|
||||||
|
|
||||||
|
# Setup the command line arguments.
|
||||||
parser.add_argument('-p', '--port', help='port number', dest='port')
|
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('-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()
|
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)
|
port = int(args.port or 8000)
|
||||||
|
|
||||||
app = main()
|
app = main()
|
||||||
|
|
File diff suppressed because it is too large
Load diff
75
blasta/utilities/logger.py
Normal file
75
blasta/utilities/logger.py
Normal 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))
|
|
@ -1,13 +1,20 @@
|
||||||
#!/usr/bin/python
|
#!/usr/bin/python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
from blasta.utilities.logger import UtilitiesLogger
|
||||||
from slixmpp import ClientXMPP
|
from slixmpp import ClientXMPP
|
||||||
|
import sys
|
||||||
|
|
||||||
|
logger = UtilitiesLogger(__name__)
|
||||||
|
|
||||||
class XmppInstance(ClientXMPP):
|
class XmppInstance(ClientXMPP):
|
||||||
|
|
||||||
def __init__(self, jid, password):
|
def __init__(self, jid, password):
|
||||||
|
function_name = sys._getframe().f_code.co_name
|
||||||
|
logger.debug(f'{function_name},{jid},Start')
|
||||||
super().__init__(jid, password)
|
super().__init__(jid, password)
|
||||||
#self.add_event_handler("connection_failed", self.on_connection_failed)
|
self.add_event_handler("connection_failed", self.on_connection_failed)
|
||||||
#self.add_event_handler("failed_auth", self.on_failed_auth)
|
self.add_event_handler("failed_auth", self.on_failed_auth)
|
||||||
self.add_event_handler("session_start", self.on_session_start)
|
self.add_event_handler("session_start", self.on_session_start)
|
||||||
self.register_plugin('xep_0004') # XEP-0004: Data Forms
|
self.register_plugin('xep_0004') # XEP-0004: Data Forms
|
||||||
self.register_plugin('xep_0030') # XEP-0030: Service Discovery
|
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_0163') # XEP-0163: Personal Eventing Protocol
|
||||||
self.register_plugin('xep_0223') # XEP-0223: Persistent Storage of Private Data via PubSub
|
self.register_plugin('xep_0223') # XEP-0223: Persistent Storage of Private Data via PubSub
|
||||||
self.connect()
|
self.connect()
|
||||||
# self.process(forever=False)
|
|
||||||
|
|
||||||
self.connection_accepted = False
|
self.connection_accepted = False
|
||||||
|
|
||||||
# def on_connection_failed(self, event):
|
def on_connection_failed(self, event):
|
||||||
# self.connection_accepted = False
|
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):
|
def on_failed_auth(self, event):
|
||||||
# self.connection_accepted = False
|
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):
|
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
|
self.connection_accepted = True
|
||||||
|
logger.debug(f'{function_name},{event},Finish')
|
||||||
|
|
Loading…
Add table
Reference in a new issue