pamhyr: Start switch to logging for program logs.

results
Pierre-Antoine Rouby 2023-07-05 16:14:44 +02:00
parent 9b9ef8ee4b
commit 2f78432005
6 changed files with 55 additions and 14 deletions

View File

@ -2,12 +2,15 @@
import os import os
import sqlite3 import sqlite3
import logging
from pathlib import Path from pathlib import Path
from tools import SQL from tools import SQL
from Model.Except import NotImplementedMethodeError from Model.Except import NotImplementedMethodeError
logger = logging.getLogger()
# Top level model class # Top level model class
class SQLModel(SQL): class SQLModel(SQL):
_sub_classes = [] _sub_classes = []
@ -22,11 +25,11 @@ class SQLModel(SQL):
self._cur = self._db.cursor() self._cur = self._db.cursor()
if is_new: if is_new:
print("CREATE") logger.info("Create database")
self._create() # Create db self._create() # Create db
# self._save() # Save # self._save() # Save
else: else:
print("UPDATE") logger.info("Update database")
self._update() # Update db scheme if necessary self._update() # Update db scheme if necessary
# self._load() # Load data # self._load() # Load data

View File

@ -1,6 +1,9 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import logging
from copy import deepcopy from copy import deepcopy
from config import Config from config import Config
from View.ASubWindow import ASubWindow from View.ASubWindow import ASubWindow
from View.ListedSubWindow import ListedSubWindow from View.ListedSubWindow import ListedSubWindow
@ -27,6 +30,8 @@ from PyQt5.QtWidgets import (
from Solver.Solvers import solver_long_name from Solver.Solvers import solver_long_name
logger = logging.getLogger()
class SolverTableModel(QAbstractTableModel): class SolverTableModel(QAbstractTableModel):
def __init__(self, headers=[], rows=[]): def __init__(self, headers=[], rows=[]):
super(QAbstractTableModel, self).__init__() super(QAbstractTableModel, self).__init__()
@ -215,7 +220,7 @@ class ConfigureWindow(ASubWindow, ListedSubWindow):
# Debug # Debug
def set_debug(self): def set_debug(self):
self.conf.debug = not self.conf.debug self.conf.debug = not self.conf.debug
print(f"[DEBUG] Debug mode set : {self.conf.debug}") logger.info(f"Debug mode set : {self.conf.debug}")
self.parent.setup_debug_mode() self.parent.setup_debug_mode()
# Solvers # Solvers

View File

@ -1,6 +1,7 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import os import os
import logging
from queue import Queue from queue import Queue
from PyQt5 import QtGui from PyQt5 import QtGui
@ -39,6 +40,8 @@ from View.Debug.Window import ReplWindow
from Model.Study import Study from Model.Study import Study
logger = logging.getLogger()
no_model_action = [ no_model_action = [
"action_menu_new", "action_menu_open", "action_menu_import_mage", "action_menu_new", "action_menu_open", "action_menu_import_mage",
"action_menu_import_rubarbe", "action_toolBar_open", "action_menu_import_rubarbe", "action_toolBar_open",
@ -206,6 +209,15 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
# Maximise window # Maximise window
self.showMaximized() self.showMaximized()
def set_debug_lvl(self, debug = True):
if debug:
logger.setLevel(logging.DEBUG)
logger.info("Set logging level to DEBUG")
else:
logger.setLevel(logging.INFO)
logger.info("Set logging level to INFO")
def setup_debug_mode(self, init = False): def setup_debug_mode(self, init = False):
menu = self.findChild(QMenu, "menu_help") menu = self.findChild(QMenu, "menu_help")
@ -216,11 +228,14 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
if self.conf.debug: if self.conf.debug:
menu.addAction(self.debug_action) menu.addAction(self.debug_action)
self.set_debug_lvl(debug = True)
else: else:
if self.conf.debug: if self.conf.debug:
menu.addAction(self.debug_action) menu.addAction(self.debug_action)
self.set_debug_lvl(debug = True)
else: else:
menu.removeAction(self.debug_action) menu.removeAction(self.debug_action)
self.set_debug_lvl(debug = False)
######### #########
# MODEL # # MODEL #
@ -283,7 +298,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
else: else:
self.model.filename = file_name + ".pamhyr" self.model.filename = file_name + ".pamhyr"
print("[INFO] Save...") logger.info("Save...")
self.model.save() self.model.save()
def save_as_study(self): def save_as_study(self):
@ -380,7 +395,7 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
if dialog.exec_(): if dialog.exec_():
file_name = dialog.selectedFiles() file_name = dialog.selectedFiles()
self.set_model(Study.open(file_name[0])) self.set_model(Study.open(file_name[0]))
print(f"[MainWindow] Open Study : {self.model.name}") logger.info(f"Open Study - {self.model.name}")
def open_new_study(self): def open_new_study(self):
"""Open dialog to set new study """Open dialog to set new study

View File

@ -2,6 +2,7 @@
import os import os
import pickle import pickle
import logging
from tools import SQL from tools import SQL
@ -13,13 +14,15 @@ from Solver.Solvers import solver_type_list
config_dir = "/.cache/pamhyr/" config_dir = "/.cache/pamhyr/"
config_file = "config.sqlite3" config_file = "config.sqlite3"
logger = logging.getLogger()
class Config(SQL): class Config(SQL):
def __init__(self): def __init__(self):
self._version = '0.0.1' self._version = '0.0.1'
self.filename = Config.filename() self.filename = Config.filename()
self.set_default_value() self.set_default_value()
print(self.filename) logging.info(f"Configuration file : {self.filename}")
super(Config, self).__init__(filename = self.filename) super(Config, self).__init__(filename = self.filename)
@ -61,10 +64,10 @@ class Config(SQL):
self.commit() self.commit()
def _update(self): def _update(self):
version = self.execute(f"SELECT value FROM info WHERE key='version'") version = self.execute(f"SELECT value FROM info WHERE key='version'")[0]
if version != self._version: if version != self._version:
print("update") logger.info(f"Configuration file update from {version} to {self._version}...")
def _load_solver(self): def _load_solver(self):
self._solvers = [] self._solvers = []

View File

@ -3,6 +3,7 @@
import sys, os import sys, os
import locale import locale
import logging
from PyQt5.QtCore import QTranslator from PyQt5.QtCore import QTranslator
from PyQt5.QtWidgets import QApplication from PyQt5.QtWidgets import QApplication
@ -15,6 +16,13 @@ from tools import (
from View.MainWindow import ApplicationWindow from View.MainWindow import ApplicationWindow
from Model.Study import Study from Model.Study import Study
logging.basicConfig(
level=logging.DEBUG,
format='[PAMHYR][%(levelname)s] %(message)s'
)
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def main(): def main():
conf = Config.load() conf = Config.load()
app = QApplication(sys.argv) app = QApplication(sys.argv)
@ -37,7 +45,7 @@ def main():
if lang_file != "": if lang_file != "":
ok = translator.load(lang_file) ok = translator.load(lang_file)
if not ok: if not ok:
print("failed") logger.error("Failed to load translate file")
app.installTranslator(translator) app.installTranslator(translator)

View File

@ -3,6 +3,7 @@
import os import os
import time import time
import sqlite3 import sqlite3
import logging
import traceback import traceback
from datetime import datetime from datetime import datetime
@ -16,6 +17,12 @@ from functools import (
reduce, partial, wraps reduce, partial, wraps
) )
###########
# LOGGING #
###########
logger = logging.getLogger()
########## ##########
# TIMERS # # TIMERS #
########## ##########
@ -242,7 +249,7 @@ class SQL(object):
@timer @timer
def execute(self, cmd, fetch_one = True, commit = False): def execute(self, cmd, fetch_one = True, commit = False):
# print(f"[SQL] {cmd}") logger.debug(f"SQL - {cmd}")
res = self._cur.execute(cmd) res = self._cur.execute(cmd)
if commit: if commit:
@ -252,13 +259,13 @@ class SQL(object):
return value return value
def _create(self): def _create(self):
print("TODO: Create") logger.warning("TODO: Create")
def _update(self): def _update(self):
print("TODO: Update") logger.warning("TODO: Update")
def _save(self): def _save(self):
print("TODO: Save") logger.warning("TODO: Save")
def _load(self): def _load(self):
print("TODO: Load") logger.warning("TODO: LOAD")