Skip to content

Commit

Permalink
better logging without print()
Browse files Browse the repository at this point in the history
  • Loading branch information
wuttinanhi committed Nov 12, 2022
1 parent 81edc34 commit 7c2543d
Show file tree
Hide file tree
Showing 10 changed files with 92 additions and 60 deletions.
11 changes: 5 additions & 6 deletions car/blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,18 @@
auth blueprint
"""


from http.client import CREATED, FORBIDDEN, NOT_FOUND, OK

from auth.decorator import admin_only, login_required
from auth.function import get_user
from flask import Blueprint, request
from marshmallow import Schema, fields, validate
from pagination.pagination import create_pagination_options_from_request
from user.service import UserService
from util.validate_request import validate_request
from werkzeug.exceptions import Forbidden

from auth.decorator import admin_only, login_required
from auth.function import get_user
from car.service import CarService
from pagination.pagination import create_pagination_options_from_request
from user.service import UserService
from util.validate_request import validate_request

blueprint = Blueprint("car", __name__, url_prefix="/car")

Expand Down
9 changes: 5 additions & 4 deletions car/service.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
from typing import List

from database.database import db_session
from pagination.pagination import Pagination, PaginationOptions
from flask import current_app
from sqlalchemy import or_
from sqlalchemy.exc import IntegrityError
from user.model import User
from werkzeug.exceptions import Conflict, InternalServerError, NotFound

from car.model import Car
from database.database import db_session
from pagination.pagination import Pagination, PaginationOptions
from user.model import User


class CarPaginationResult:
Expand Down Expand Up @@ -92,7 +93,7 @@ def update(car: Car):
)
db_session.commit()
except Exception as e:
print(e)
current_app.logger.error(e)
db_session.rollback()
raise InternalServerError("Failed to update user!")

Expand Down
19 changes: 10 additions & 9 deletions chat/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@
chat socket handler
"""


from typing import Any, Dict

from auth.service import AuthService
from flask import request
from flask import current_app, request
from flask_socketio import Namespace, emit
from pagination.pagination import PaginationOptions
from user.model import User
from user.service import UserService
from werkzeug.exceptions import BadRequest, NotFound, Unauthorized

from auth.service import AuthService
from chat.service import ChatHistoryPaginationOptions, ChatService
from pagination.pagination import PaginationOptions
from user.model import User
from user.service import UserService


class ChatMapper(Namespace):
Expand Down Expand Up @@ -65,13 +66,13 @@ def auth_user(data):
raise Unauthorized("Invalid Jwt")

def on_connect(self):
print(f"Chat Client connected: {request.sid}")
current_app.logger.info(f"Chat Client connected: {request.sid}")

def on_disconnect(self):
sid = request.sid
user = ChatHandler.from_sid_to_user(sid)
ChatHandler.remove(user)
print(f"Chat Client disconnected: {user.id} {user.email} {request.sid}")
current_app.logger.info(f"Chat Client disconnected: {user.id} {user.email} {request.sid}")

def on_login(self, data):
user = ChatHandler.auth_user(data)
Expand Down Expand Up @@ -128,13 +129,13 @@ def on_chat_send(self, data):
try:
ChatHandler.emit(user, "chat_receive", chat.json())
except Exception as err:
print(err)
current_app.logger.error(err)

# send to target user
try:
ChatHandler.emit(to_user, "chat_receive", chat.json())
except Exception as err:
print(err)
current_app.logger.error(err)

# update chat head
ChatService.update_chat_head(to_user, from_user)
Expand Down
16 changes: 9 additions & 7 deletions chat/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,19 @@
from datetime import datetime
from typing import List

from database.database import db_session
from flask import current_app
from marshmallow import fields, validate
from pagination.pagination import Pagination, PaginationOptions, PaginationSortOptions
from sqlalchemy import desc
from sqlalchemy.orm.query import Query
from sqlalchemy.sql import and_, or_
from user.model import User
from user.service import UserService
from werkzeug.exceptions import InternalServerError

from chat.model import Chat, ChatHead
from database.database import db_session
from pagination.pagination import (Pagination, PaginationOptions,
PaginationSortOptions)
from user.model import User
from user.service import UserService


class ChatHistoryPaginationOptions(PaginationOptions):
Expand Down Expand Up @@ -45,7 +47,7 @@ def send_chat(
db_session.commit()
success = True
except Exception as e:
print(e)
current_app.logger.error(e)
db_session.rollback()
raise InternalServerError("Failed to send chat!")

Expand Down Expand Up @@ -84,7 +86,7 @@ def list_chat_history(opts: ChatHistoryPaginationOptions) -> List[Chat]:

return result
except Exception as e:
print(e)
current_app.logger.error(e)
raise InternalServerError("Failed to retrieve chat history!")

@staticmethod
Expand All @@ -107,7 +109,7 @@ def update_chat_head(user: User, from_user: User):

db_session.commit()
except Exception as e:
print(e)
current_app.logger.error(e)
db_session.rollback()
raise InternalServerError("Failed to update chat head!")

Expand Down
35 changes: 28 additions & 7 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@
main
"""

from datetime import datetime
from http.client import BAD_REQUEST, INTERNAL_SERVER_ERROR

from flask import Flask, request
from flask.logging import create_logger
from flask_limiter import Limiter
from flask_limiter.util import get_remote_address
from flask_socketio import SocketIO, emit
Expand Down Expand Up @@ -34,6 +36,11 @@
__name__, static_folder="static", template_folder="static", static_url_path=""
)


# create logger
app.logger = create_logger(app)


# apply rate limiter
limiter = Limiter(
app,
Expand All @@ -43,11 +50,6 @@
)


@app.errorhandler(429)
def ratelimit_handler(__error):
return {"error": "rate limit exceeded!"}, 429


# initialize database
init_db()

Expand Down Expand Up @@ -79,6 +81,26 @@ def hello_world():
return {"app": "car-parking-reservation-api", "version": "1.0"}


# log every request
@app.before_request
def log_request_info():
# get date
date = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
# get url
url = request.url
# get ip address
ip = request.remote_addr
# get request method
method = request.method
# logging request
app.logger.info("%s %s %s %s", date, ip, method, url)


@app.errorhandler(429)
def ratelimit_handler(__error):
return {"error": "rate limit exceeded!"}, 429


# global error handler
@app.errorhandler(Exception)
def error_handle(err: Exception):
Expand All @@ -89,7 +111,7 @@ def error_handle(err: Exception):
if issubclass(type(err), HTTPException):
return {"error": str(err.description)}, err.code
# internal error
print(err)
app.logger.error(err)
return {"error": "Internal server exception!"}, INTERNAL_SERVER_ERROR


Expand All @@ -107,5 +129,4 @@ def on_error(err: Exception):


# if __name__ == "__main__":
# print("===== START =====")
# socketio.run(app)
7 changes: 4 additions & 3 deletions parking_lot/service.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
from typing import List

from database.database import db_session
from flask import current_app
from werkzeug.exceptions import InternalServerError, NotFound

from database.database import db_session
from parking_lot.model import ParkingLot


Expand Down Expand Up @@ -36,7 +37,7 @@ def add(location: str, open_status=False):
return parking_lot
except Exception as err:
db_session.rollback()
print(err)
current_app.logger.error(err)
raise InternalServerError("Something error when adding parking lot")

@staticmethod
Expand All @@ -50,7 +51,7 @@ def update(parking_lot: ParkingLot):
)
db_session.commit()
except Exception as e:
print(e)
current_app.logger.error(e)
db_session.rollback()
raise InternalServerError("Failed to update parking lot!")

Expand Down
20 changes: 12 additions & 8 deletions payment/blueprint.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@
from http.client import FORBIDDEN, NOT_FOUND, OK

import stripe
from flask import Blueprint, current_app, jsonify, request
from marshmallow import Schema, fields, validate

from auth.decorator import admin_only, login_required
from auth.function import get_user
from flask import Blueprint, jsonify, request
from marshmallow import Schema, fields, validate
from pagination.pagination import create_pagination_options_from_request
from util.validate_request import validate_request

from payment.model import InvoiceStatus
from payment.service import PaymentService
from util.validate_request import validate_request

blueprint = Blueprint("payment", __name__, url_prefix="/payment")

Expand Down Expand Up @@ -69,7 +69,9 @@ def stripe_webhook():
try:
event = json.loads(payload)
except:
print("⚠️ Webhook error while parsing basic request." + str(e))
current_app.logger.error(
"⚠️ Webhook error while parsing basic request." + str(e)
)
return jsonify(success=False)

# get signature header
Expand All @@ -79,7 +81,7 @@ def stripe_webhook():
payload, sig_header, PaymentService.stripe_webhook_secret
)
except stripe.error.SignatureVerificationError as e:
print("⚠️ Webhook signature verification failed." + str(e))
current_app.logger.error("⚠️ Webhook signature verification failed." + str(e))
return jsonify(success=False)

# check event is none
Expand All @@ -90,10 +92,12 @@ def stripe_webhook():
if event and event["type"] == "payment_intent.succeeded":
payment_intent: stripe.PaymentIntent = event["data"]["object"]
PaymentService.handle_stripe_payment(payment_intent)
print("Payment for {} succeeded".format(payment_intent["amount"]))
current_app.logger.info(
"Payment for {} succeeded".format(payment_intent["amount"])
)
else:
# Unexpected event type
print("Unhandled event type {}".format(event["type"]))
current_app.logger.error("Unhandled event type {}".format(event["type"]))

# return success
return jsonify(success=True)
Expand Down
11 changes: 6 additions & 5 deletions payment/service.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,16 @@
from typing import List

import stripe
from flask import current_app
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound

from database.database import db_session
from pagination.pagination import Pagination, PaginationOptions, PaginationRaw
from payment.model import Invoice, InvoiceStatus
from reservation.model import Reservation
from settings.service import SettingService
from user.model import User
from user.service import UserService
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound

from payment.model import Invoice, InvoiceStatus


class CustomInvoiceUserModel:
Expand Down Expand Up @@ -86,7 +87,7 @@ def create_invoice(reservation: Reservation, description=""):

return invoice
except Exception as e:
print(e)
current_app.logger.error(e)
db_session.rollback()
raise InternalServerError("Failed to create invoice!")

Expand All @@ -102,7 +103,7 @@ def update_invoice(invoice: Invoice):
)
db_session.commit()
except Exception as e:
print(e)
current_app.logger.error(e)
db_session.rollback()
raise InternalServerError("Failed to update invoice!")

Expand Down
13 changes: 7 additions & 6 deletions reservation/service.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
from datetime import datetime
from typing import List

from flask import current_app
from sqlalchemy import or_
from sqlalchemy.orm import Query
from werkzeug.exceptions import Conflict, Forbidden, NotFound

from car.model import Car
from car.service import CarService
from database.database import db_session
from pagination.pagination import Pagination, PaginationOptions
from parking_lot.model import ParkingLot
from parking_lot.service import ParkingLotService
from sqlalchemy import or_
from sqlalchemy.orm import Query
from reservation.model import Reservation
from user.model import User
from user.service import UserService
from werkzeug.exceptions import Conflict, Forbidden, NotFound

from reservation.model import Reservation


class ReservationPaginationResult:
Expand Down Expand Up @@ -56,7 +57,7 @@ def create_reservation(
return reservation
except Exception as err:
db_session.rollback()
print(err)
current_app.logger.error(err)
raise err

@staticmethod
Expand Down
Loading

0 comments on commit 7c2543d

Please sign in to comment.