Work after logging related fixes.
This commit is contained in:
@@ -14,7 +14,10 @@ from fastapi import APIRouter, Depends, Header, HTTPException, Response, status
|
||||
# from pydantic import BaseModel, EmailStr, Field
|
||||
from typing import Dict, List, Optional, Set, Union
|
||||
|
||||
from app.log import log, logging, logger_reset
|
||||
import logging
|
||||
from app.log import logger_reset
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from app.config import settings
|
||||
from app.db_sql import redis_lookup_id_random, sql_select
|
||||
|
||||
|
||||
127
app/log.py
127
app/log.py
@@ -8,65 +8,70 @@ from app.config import settings
|
||||
# 'uvicorn' under 'loggers' creates an output to the 'console' handler
|
||||
# Do not also add 'console' handler to the 'root' 'handlers' list
|
||||
# For now just using that to add or remove file logging options.
|
||||
logging.config.dictConfig({
|
||||
'version': 1,
|
||||
'formatters': {
|
||||
'default': {'format': '[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s'},
|
||||
'long': {'format': '[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S'},
|
||||
'short': {'format': '[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s', 'datefmt': '%H:%M:%S', 'use_colors': True},
|
||||
},
|
||||
#'filename': 'example.log',
|
||||
# 'level': logging.ERROR,
|
||||
'handlers': {
|
||||
'console': {
|
||||
'class': 'logging.StreamHandler',
|
||||
'stream': 'ext://sys.stderr',
|
||||
'formatter': 'short',
|
||||
try:
|
||||
logging.config.dictConfig({
|
||||
'version': 1,
|
||||
'formatters': {
|
||||
'default': {'format': '[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s'},
|
||||
'long': {'format': '[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s', 'datefmt': '%Y-%m-%d %H:%M:%S'},
|
||||
'short': {'format': '[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s', 'datefmt': '%H:%M:%S', 'use_colors': True},
|
||||
},
|
||||
'log_file_all': {
|
||||
'level': 'NOTSET',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'formatter': 'long',
|
||||
'filename': settings.LOG_PATH['app'],
|
||||
'maxBytes': 10485760, # 5,242,880 = 5 MB; 10,485,760 = 10 MB
|
||||
'backupCount': 9
|
||||
#'filename': 'example.log',
|
||||
# 'level': logging.ERROR,
|
||||
'handlers': {
|
||||
'console': {
|
||||
'class': 'logging.StreamHandler',
|
||||
'stream': 'ext://sys.stderr',
|
||||
'formatter': 'short',
|
||||
},
|
||||
'log_file_all': {
|
||||
'level': 'NOTSET',
|
||||
'class': 'logging.handlers.RotatingFileHandler',
|
||||
'formatter': 'long',
|
||||
'filename': settings.LOG_PATH['app'],
|
||||
'maxBytes': 10485760, # 5,242,880 = 5 MB; 10,485,760 = 10 MB
|
||||
'backupCount': 9
|
||||
},
|
||||
# 'log_file_warning': {
|
||||
# 'level': 'WARNING',
|
||||
# 'class': 'logging.handlers.RotatingFileHandler',
|
||||
# 'formatter': 'long',
|
||||
# 'filename': settings.LOG_PATH['app_warning'],
|
||||
# 'maxBytes': 512000, # 524,288 = 512KB
|
||||
# 'backupCount': 9
|
||||
# },
|
||||
# 'test_handler': {
|
||||
# 'class': 'logging.StreamHandler',
|
||||
# 'level': 'INFO',
|
||||
# 'formatter': 'short',
|
||||
# },
|
||||
# 'test_handler_all_rotate': {
|
||||
# 'class': 'logging.handlers.RotatingFileHandler',
|
||||
# 'level': 'NOTSET',
|
||||
# 'formatter': 'short',
|
||||
# 'filename': '/logs/test_rotate.log',
|
||||
# 'maxBytes': 100000, # 5120000 = 5 MB
|
||||
# 'backupCount': 2,
|
||||
# }
|
||||
},
|
||||
# 'log_file_warning': {
|
||||
# 'level': 'WARNING',
|
||||
# 'class': 'logging.handlers.RotatingFileHandler',
|
||||
# 'formatter': 'long',
|
||||
# 'filename': settings.LOG_PATH['app_warning'],
|
||||
# 'maxBytes': 512000, # 524,288 = 512KB
|
||||
# 'backupCount': 9
|
||||
# },
|
||||
# 'test_handler': {
|
||||
# 'class': 'logging.StreamHandler',
|
||||
# 'level': 'INFO',
|
||||
# 'formatter': 'short',
|
||||
# },
|
||||
# 'test_handler_all_rotate': {
|
||||
# 'class': 'logging.handlers.RotatingFileHandler',
|
||||
# 'level': 'NOTSET',
|
||||
# 'formatter': 'short',
|
||||
# 'filename': '/logs/test_rotate.log',
|
||||
# 'maxBytes': 100000, # 5120000 = 5 MB
|
||||
# 'backupCount': 2,
|
||||
# }
|
||||
},
|
||||
'loggers': {
|
||||
# 'uvicorn': {'handlers': ['default'], 'level': 'INFO'},
|
||||
'uvicorn': {'handlers': ['console'], 'level': 'INFO'},
|
||||
# 'uvicorn.error': {'level': 'INFO', 'handlers': ['default'], 'propagate': True},
|
||||
# 'uvicorn.error': {'level': 'INFO', 'handlers': ['console'], 'propagate': True},
|
||||
# 'uvicorn.access': {'handlers': ['access'], 'level': 'INFO', 'propagate': False},
|
||||
# 'gunicorn': {'handlers': ['console'], 'level': 'INFO'},
|
||||
},
|
||||
'root': {
|
||||
'handlers': ['log_file_all'], #, 'log_file_all', 'log_file_warning'],
|
||||
# 'handlers': ['console', 'log_file_all'], #, 'log_file_all', 'log_file_warning'],
|
||||
'level': 'WARNING', # WARNING
|
||||
}
|
||||
})
|
||||
'loggers': {
|
||||
# 'uvicorn': {'handlers': ['default'], 'level': 'INFO'},
|
||||
'uvicorn': {'handlers': ['console'], 'level': 'INFO'},
|
||||
# 'uvicorn.error': {'level': 'INFO', 'handlers': ['default'], 'propagate': True},
|
||||
# 'uvicorn.error': {'level': 'INFO', 'handlers': ['console'], 'propagate': True},
|
||||
# 'uvicorn.access': {'handlers': ['access'], 'level': 'INFO', 'propagate': False},
|
||||
# 'gunicorn': {'handlers': ['console'], 'level': 'INFO'},
|
||||
},
|
||||
'root': {
|
||||
'handlers': ['log_file_all'], #, 'log_file_all', 'log_file_warning'],
|
||||
# 'handlers': ['console', 'log_file_all'], #, 'log_file_all', 'log_file_warning'],
|
||||
'level': 'WARNING', # WARNING
|
||||
}
|
||||
})
|
||||
except Exception as e:
|
||||
print(f"Error configuring logging: {e}")
|
||||
# Fallback basic config?
|
||||
logging.basicConfig(level=logging.WARNING)
|
||||
|
||||
|
||||
log = logging.getLogger('root')
|
||||
@@ -76,6 +81,9 @@ log = logging.getLogger('root')
|
||||
# )
|
||||
|
||||
|
||||
def get_logger(name: str):
|
||||
return logging.getLogger(name)
|
||||
|
||||
|
||||
# ### BEGIN ### Log ### logger_reset() ###
|
||||
# https://realpython.com/primer-on-python-decorators/
|
||||
@@ -85,6 +93,11 @@ def logger_reset(func):
|
||||
# log.info(locals())
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
# Local logger instance to avoid global dependency issues
|
||||
# log = logging.getLogger(func.__module__) # Use the module's logger? Or root?
|
||||
# Using root for now to maintain behavior, but safer access
|
||||
log = logging.getLogger('root')
|
||||
|
||||
if func.__name__ not in ['redis_lookup_id_random', 'sql_enable_part', 'sql_hidden_part']:
|
||||
log.info(f'*** Function: "{func.__name__}()"')
|
||||
log.debug(f'*** Function Positional Args: {args}\nFunction Key Args: {kwargs}')
|
||||
|
||||
@@ -12,7 +12,8 @@ from typing import Dict, List, Optional, Set, Union
|
||||
|
||||
from . import config
|
||||
# from app.lib_general import common_route_params, Common_Route_Params
|
||||
from app.log import log, logging
|
||||
import logging
|
||||
import app.log
|
||||
|
||||
# Import the routers here first:
|
||||
from app.routers import ae_obj, aether_cfg, api_crud, api_crud_v2, api_crud_v3, api, importing, sql, account, activity_log, address, archive, archive_content, contact, cont_edu_cert, cont_edu_cert_person, data_store, event, event_abstract, event_badge, event_badge_importing, event_badge_template, event_device, event_exhibit, event_exhibit_tracking, event_file, event_importing, event_location, event_person, event_person_detail, event_person_tracking, event_presentation, event_presenter, event_registration, event_session, flask_cfg, fundraising, grant, hosted_file, journal, journal_entry, log_client_viewing, lookup, membership_cfg, membership_group, membership_person_group, membership_person, membership_person_profile, membership_type, membership_person_type, order, order_v3, order_line, order_cart, organization, page, person, person_user, post, post_comment, product, qr, site, site_domain, user, util_email, websockets_redis, e_confex, e_cvent, c_idaa, e_impexium, e_stripe
|
||||
@@ -25,7 +26,7 @@ from app.db_sql import sql_select, reset_redis # , sql_connect
|
||||
print('### **** *** ** * The Aether API v4 using FastAPI is loading... * ** *** **** ###')
|
||||
|
||||
|
||||
#log = logging.getLogger('root')
|
||||
log = logging.getLogger(__name__)
|
||||
# log.setLevel(logging.DEBUG) # DEBUG > INFO > WARNING > ERROR > CRITICAL
|
||||
#logging.basicConfig(
|
||||
#format='[%(asctime)s] %(levelname)s @ %(module)s.%(funcName)s()#%(lineno)d: %(message)s'
|
||||
|
||||
@@ -4,7 +4,9 @@ from typing import Dict, List, Optional, Set, Union
|
||||
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
|
||||
|
||||
from app.db_sql import redis_lookup_id_random
|
||||
from app.lib_general import log, logging
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from app.models.common_field_schema import base_fields, default_num_bytes
|
||||
|
||||
|
||||
@@ -4,7 +4,10 @@ from typing import Dict, List, Optional, Set, Union
|
||||
from pydantic import BaseModel, EmailStr, Field, Json, PrivateAttr, ValidationError, validator
|
||||
|
||||
from app.db_sql import redis_lookup_id_random
|
||||
from app.lib_general import log, logging, Response, status
|
||||
from app.lib_general import Response, status
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from app.config import settings
|
||||
|
||||
|
||||
@@ -3,7 +3,10 @@ from typing import Dict, List, Optional, Set, Union
|
||||
import json
|
||||
import urllib
|
||||
|
||||
from app.lib_general import log, logging, Common_Route_Params, common_route_params
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
from app.lib_general import Common_Route_Params, common_route_params
|
||||
from app.models.response_models import *
|
||||
from app.ae_obj_types_def import obj_type_kv_li
|
||||
from app.db_sql import redis_lookup_id_random, sql_select, sql_insert, sql_update, sql_delete, get_id_random
|
||||
|
||||
Reference in New Issue
Block a user