added logging
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
from logging.config import dictConfig
|
||||
import os
|
||||
import logging
|
||||
from logging.handlers import WatchedFileHandler
|
||||
from flask import Flask
|
||||
from flask_socketio import SocketIO
|
||||
from .models import db
|
||||
@@ -9,62 +11,22 @@ from .seed_db import seed_courses
|
||||
socketio = SocketIO(async_mode='eventlet', cors_allowed_origins="*")
|
||||
|
||||
def create_app():
|
||||
# Configure logging BEFORE creating the application object
|
||||
dictConfig({
|
||||
'version': 1,
|
||||
'disable_existing_loggers': False,
|
||||
'formatters': {
|
||||
'default': {
|
||||
'format': '[%(asctime)s] %(levelname)s in %(module)s: %(message)s',
|
||||
},
|
||||
'plain': {
|
||||
'format': '%(message)s',
|
||||
}
|
||||
},
|
||||
'handlers': {
|
||||
# Console handler (keeps logs visible in terminal)
|
||||
'wsgi': {
|
||||
'class': 'logging.StreamHandler',
|
||||
'stream': 'ext://flask.logging.wsgi_errors_stream',
|
||||
'formatter': 'default'
|
||||
},
|
||||
# File handler for Application Logs (slides.log)
|
||||
'slides_file': {
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': 'slides.log',
|
||||
'maxBytes': 1024 * 1024 * 10, # 10 MB
|
||||
'backupCount': 5,
|
||||
'formatter': 'default',
|
||||
'level': 'INFO',
|
||||
'encoding': 'utf8'
|
||||
},
|
||||
# File handler for Request Logs (requests.log)
|
||||
'requests_file': {
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'filename': 'requests.log',
|
||||
'maxBytes': 1024 * 1024 * 10, # 10 MB
|
||||
'backupCount': 5,
|
||||
'formatter': 'plain', # Requests already have timestamps/formatting
|
||||
'level': 'INFO',
|
||||
'encoding': 'utf8'
|
||||
}
|
||||
},
|
||||
'root': {
|
||||
'level': 'INFO',
|
||||
'handlers': ['wsgi', 'slides_file']
|
||||
},
|
||||
'loggers': {
|
||||
# Isolate the Werkzeug request logger
|
||||
'werkzeug': {
|
||||
'level': 'INFO',
|
||||
'handlers': ['wsgi', 'requests_file'],
|
||||
'propagate': False # Prevent requests from leaking into slides.log
|
||||
}
|
||||
}
|
||||
})
|
||||
# 1. Setup Log Directory
|
||||
log_dir = os.path.join(os.getcwd(), 'logs')
|
||||
if not os.path.exists(log_dir):
|
||||
os.makedirs(log_dir)
|
||||
|
||||
app = Flask(__name__, static_folder='static', static_url_path='/static')
|
||||
app.config.from_object('config.Config')
|
||||
|
||||
file_handler = WatchedFileHandler(log_dir + '/app.log', mode='a', encoding='UTF-8')
|
||||
file_handler.setFormatter(logging.Formatter(
|
||||
'%(asctime)s %(levelname)s [%(module)s:%(lineno)d]: %(message)s'
|
||||
))
|
||||
file_handler.setLevel(logging.INFO)
|
||||
app.logger.addHandler(file_handler)
|
||||
app.logger.setLevel(logging.INFO)
|
||||
|
||||
db.init_app(app)
|
||||
|
||||
with app.app_context():
|
||||
|
||||
Reference in New Issue
Block a user