diff --git a/app/__init__.py b/app/__init__.py index fab31430d322a2842639ad789125566487976160..35b1be553b2454c1b9b997b2c47b3446cd68c444 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -18,9 +18,10 @@ def create_app(config_class=Config): #Only enabled when DEVELOPMENT_MODE in .env is set to true development_mode = os.getenv("DEVELOPMENT_MODE") + print(development_mode) - if (development_mode.lower() == 'true'): - app.config['DEBUG'] = True + #if (development_mode.lower() == 'true'): + app.config['DEBUG'] = True load_dotenv() db_host = os.getenv("DATABASE_HOST") @@ -57,7 +58,7 @@ def create_app(config_class=Config): if __name__ == "__main__": - app.run(use_reloader=True) + app.run(use_reloader=True, debug=True) login_manager.login_view = 'profile.login' login_manager.init_app(app) @@ -81,3 +82,6 @@ def register_blueprints(app): module = __import__(f'app.{module_name}', fromlist=['bp']) app.register_blueprint(module.bp, url_prefix=url_prefix) + + + diff --git a/app/logger/__init__.py b/app/logger/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..31350b1cb1fb4fd3d162846f4037bb930d067317 --- /dev/null +++ b/app/logger/__init__.py @@ -0,0 +1,38 @@ +import logging +import os +from .config import LOG_FORMAT, LOG_LEVELS, LOG_DIR + +class LoggerConfig: + def __init__(self, logs_dir=LOG_DIR): + self.logs_dir = logs_dir + self.ensure_logs_dir_exists() + + def ensure_logs_dir_exists(self): + if not os.path.exists(self.logs_dir): + os.makedirs(self.logs_dir) + + def setup_logger(self, name, log_file='error.log', level=logging.DEBUG): + log_file_path = os.path.join(self.logs_dir, log_file) + logger = logging.getLogger(name) + logger.setLevel(level) + + file_handler = logging.FileHandler(log_file_path) + console_handler = logging.StreamHandler() + + file_handler.setLevel(level) + console_handler.setLevel(level) + + formatter = logging.Formatter(LOG_FORMAT) + file_handler.setFormatter(formatter) + console_handler.setFormatter(formatter) + + logger.addHandler(file_handler) + logger.addHandler(console_handler) + + return logger + +# Create different loggers here +logger_config = LoggerConfig() +app_logger = logger_config.setup_logger('app', log_file='app.log', level=LOG_LEVELS['debug']) +db_logger = logger_config.setup_logger('db', log_file='db.log', level=LOG_LEVELS['info']) +auth_logger = logger_config.setup_logger('auth', log_file='auth.log', level=LOG_LEVELS['warning']) diff --git a/app/logger/config.py b/app/logger/config.py new file mode 100644 index 0000000000000000000000000000000000000000..84e593e6713b4952b6dac56b5e592639baf78a0d --- /dev/null +++ b/app/logger/config.py @@ -0,0 +1,16 @@ +import logging + +# Define logging formats +LOG_FORMAT = '%(asctime)s %(name)s : %(levelname)s - %(message)s' + +# Define log levels +LOG_LEVELS = { + 'debug': logging.DEBUG, + 'info': logging.INFO, + 'warning': logging.WARNING, + 'error': logging.ERROR, + 'critical': logging.CRITICAL, +} + +# Default log directory +LOG_DIR = 'logs' diff --git a/app/profile/routes.py b/app/profile/routes.py index 4a32cfa129046e8b78d5ec05953a7ac3dc2e449b..a22e49be26b9d13e84eb52f5311588040a140d34 100644 --- a/app/profile/routes.py +++ b/app/profile/routes.py @@ -5,6 +5,7 @@ from werkzeug.security import generate_password_hash, check_password_hash from app.models import User from app import db from flask_login import login_user, logout_user, login_required, current_user +from app.logger import app_logger @bp.route('/signup') def signup(): @@ -56,6 +57,7 @@ def login(): @login_required @bp.route('/home') def index(): + app_logger.error("Logger accessed on profile page") if current_user.is_authenticated: return render_template('profile/index.html', username=current_user.username)