[RTOP-26] Fix logging on restapi

This commit is contained in:
lucasbutzke
2025-07-31 11:55:28 -03:00
parent 3d041e2119
commit de464918a8
3 changed files with 32 additions and 14 deletions

View File

@@ -11,7 +11,13 @@ from dotenv import load_dotenv
ENV_PATH = Path(__file__).resolve().parent.parent / ".env"
DB_PATH = Path(__file__).resolve().parent.parent / "restapi.db"
BASE_DIR = os.path.abspath(os.path.dirname(__file__))
logger = logging.getLogger(__name__)
logging.basicConfig(
level=logging.DEBUG, # Minimum level to capture
format='[%(levelname)s] %(asctime)s - %(message)s',
datefmt='%H:%M:%S'
)
# Function to validate environment variable values
def is_valid_env(var_name, value):
@@ -34,17 +40,17 @@ def generate_env_file():
f.write(f"PEPPER={pepper}\n")
os.chmod(ENV_PATH, 0o600)
logger.info(f".env file created at {ENV_PATH}")
logger.info(f".env file created at {ENV_PATH}")
# Ensure the database file exists and is writable
# Deletion is required because new secrets will change the database saved hashes
if os.path.exists(DB_PATH):
os.remove(DB_PATH)
logger.info(f"⚠️ Deleted existing database file: {DB_PATH}")
logger.info(f"Deleted existing database file: {DB_PATH}")
# Load .env file
if not os.path.isfile(ENV_PATH):
logger.warning("⚠️ .env file not found, creating one...")
logger.warning(".env file not found, creating one...")
generate_env_file()
load_dotenv(dotenv_path=ENV_PATH, override=False)
@@ -56,15 +62,15 @@ try:
if not val or not is_valid_env(var, val):
raise RuntimeError(f"Environment variable '{var}' is invalid or missing")
except RuntimeError as e:
logger.error(f"{e}")
logger.error(f"{e}")
# Need to regenerate .env file and remove the database as well
response = input("Do you want to regenerate the .env file? This will delete your database. [y/N]: ").strip().lower()
if response == 'y':
logger.info("🔁 Regenerating .env with new valid values...")
logger.info("Regenerating .env with new valid values...")
generate_env_file()
load_dotenv(ENV_PATH)
else:
logger.error("🚫 Exiting due to invalid environment configuration.")
logger.error("Exiting due to invalid environment configuration.")
exit(1)

View File

@@ -19,6 +19,12 @@ else:
app_restapi.config.from_object(config.DevConfig)
logger = logging.getLogger(__name__)
logging.basicConfig(
level=logging.DEBUG, # Minimum level to capture
format='[%(levelname)s] %(asctime)s - %(message)s',
datefmt='%H:%M:%S'
)
restapi_bp = Blueprint('restapi_blueprint', __name__)
_handler_callback_get: Optional[Callable[[str, dict], dict]] = None
_handler_callback_post: Optional[Callable[[str, dict], dict]] = None
@@ -74,12 +80,12 @@ def user_lookup_callback(_jwt_header, jwt_data):
def register_callback_get(callback: Callable[[str, dict], dict]):
global _handler_callback_get
_handler_callback_get = callback
print("GET Callback registered successfully for rest_blueprint!")
logger.info("GET Callback registered successfully for rest_blueprint!")
def register_callback_post(callback: Callable[[str, dict], dict]):
global _handler_callback_post
_handler_callback_post = callback
print("POST Callback registered successfully for rest_blueprint!")
logger.info("POST Callback registered successfully for rest_blueprint!")
@restapi_bp.route("/create-user", methods=["POST"])
def create_user():
@@ -87,7 +93,7 @@ def create_user():
try:
users_exist = User.query.first() is not None
except Exception as e:
print(f"Error checking for users: {e}")
logger.error(f"Error checking for users: {e}")
return jsonify({"msg": "User creation error"}), 401
# if there are no users, we don't need to verify JWT
@@ -121,7 +127,7 @@ def get_user_info(user_id):
try:
user = User.query.get(user_id)
except Exception as e:
print(f"Error retrieving user: {e}")
logger.error(f"Error retrieving user: {e}")
return jsonify({"msg": "User retrieval error"}), 500
if not user:
@@ -135,11 +141,11 @@ def get_users_info():
try:
verify_jwt_in_request()
except Exception as e:
print("No JWT token provided, checking for users without authentication")
logger.warning("No JWT token provided, checking for users without authentication")
try:
users_exist = User.query.first() is not None
except Exception as e:
print(f"Error checking for users: {e}")
logger.error(f"Error checking for users: {e}")
return jsonify({"msg": "User retrieval error"}), 500
if not users_exist:
@@ -149,7 +155,7 @@ def get_users_info():
try:
users = User.query.all()
except Exception as e:
print(f"Error retrieving users: {e}")
logger.error(f"Error retrieving users: {e}")
return jsonify({"msg": "User retrieval error"}), 500
return jsonify([user.to_dict() for user in users]), 200
@@ -169,7 +175,7 @@ def change_password(user_id):
try:
user = User.query.get(user_id)
except Exception as e:
print(f"Error retrieving user: {e}")
logger.error(f"Error retrieving user: {e}")
return jsonify({"msg": "User retrieval error"}), 500
if not user:

View File

@@ -28,7 +28,13 @@ app = flask.Flask(__name__)
app.secret_key = str(os.urandom(16))
login_manager = flask_login.LoginManager()
login_manager.init_app(app)
logger = logging.getLogger(__name__)
logging.basicConfig(
level=logging.DEBUG, # Minimum level to capture
format='[%(levelname)s] %(asctime)s - %(message)s',
datefmt='%H:%M:%S'
)
openplc_runtime = openplc.runtime()