-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLogger.py
More file actions
69 lines (60 loc) · 3.01 KB
/
Logger.py
File metadata and controls
69 lines (60 loc) · 3.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import logging
from functools import wraps
logging.basicConfig(filename='log.txt', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s')
"""
A decorator to log function calls, successes, and failures.
"""
def log_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
try:
result = func(*args, **kwargs)
log_success(func.__name__, result, args, kwargs)
return result
except Exception as e:
log_failure(func.__name__, str(e), args, kwargs)
raise e
return wrapper
def log_success(func_name, result, args, kwargs):
"""Logs a success message based on the function name."""
success_messages = {
'register_user': lambda: f"registered successfully",
'login': lambda: f"logged in successfully",
'add_book': lambda: f"book added successfully",
'remove_book': lambda: f"book removed successfully",
'lend_book': lambda: f"book borrowed successfully",
'return_book': lambda: f"book returned successfully",
'enter_waiting_list': lambda: f"added to waiting list successfully",
'update_member_observer': lambda: f"member update successfully",
'only_search': lambda: f"Search book by: {kwargs} completed successfully",
'display_books_by_category': lambda: f"displayed books by category successfully",
'display_all_books': lambda: "Displayed all books successfully",
'display_available_books': lambda: "Displayed available books successfully",
'display_loaned_books': lambda: "Displayed borrowed books successfully",
'display_10_popularity_books': lambda: "displayed 10 popular books successfully",
'logout': lambda: "log out successful"
}
message = success_messages.get(func_name, lambda: f"{func_name}")()
logging.info(message)
def log_failure(func_name, error, args, kwargs):
"""Logs a failure message based on the function name and error."""
failure_messages = {
'register_user': lambda: f"registered fail",
'login': lambda: f"logged in fail",
'add_book': lambda: f"book added fail",
'remove_book': lambda: f"book removed fail",
'lend_book': lambda: f"book borrowed fail",
'return_book': lambda: f"book returned fail",
'enter_waiting_list': lambda: f"added to waiting list fail",
'update_member_observer': lambda: f"member update fail",
'only_search': lambda: f"Search book by: {kwargs} completed fail",
'display_books_by_category': lambda: f"displayed books by category fail",
'display_all_books': lambda: "Displayed all books fail",
'display_available_books': lambda: "Displayed available books fail",
'display_loaned_books': lambda: "Displayed borrowed books fail",
'display_10_popularity_books': lambda: "displayed 10 popular books fail",
'logout': lambda: "log out fail"
}
message = failure_messages.get(func_name, lambda: f"{func_name}")()
logging.error(message)