Está en la página 1de 2

import logging #libreria para trabajar con los logs

# Custom Exception for Insufficient Funds


class InsufficientFundsError(Exception): #Se creo la clase
def __init__(self, balance, amount): #Creo constructor que se llama cuando hay
error
super().__init__(f"Insufficient funds. Balance: {balance}, Withdrawal
amount: {amount}")
# LLama al constructor de la clase para inicializar la excepcion
# Bank Account Class
class BankAccount:
def __init__(self, account_holder, initial_balance=0):
self.account_holder = account_holder
self.balance = initial_balance

def deposit(self, amount):


if amount <= 0:
raise ValueError("Deposit amount must be positive.")
self.balance += amount
logging.info("Your deposit was a success. Amount deposited: %d, New account
balance: %d", amount, self.balance) #gracias a la libreria puedo crear logs de info
donde cada vez que se ejecute el codigo se creara un log con la informacion que se
le ponga para depositar

def withdraw(self, amount):


if amount <= 0:
raise ValueError("Withdrawal amount must be positive.")
if amount > self.balance:
raise InsufficientFundsError(self.balance, amount)
self.balance -= amount
logging.info("Your withdrawal was a success. Amount withdrawed: %d, New
account balance: %d", amount, self.balance) #gracias a la libreria puedo crear logs
de info donde cada vez que se ejecute el codigo se creara un log con la informacion
que se le ponga para retirar

def check_balance(self):
return self.balance

# Configure Logging
logging.basicConfig(filename='banking.log', level=logging.DEBUG, format='%
(asctime)s - %(levelname)s - %(message)s') # configura el sistema de log para que
me crea un archivo banking.log donde aparecen los commentarios de error o sin
error. level=logging.DEBUG es para que me muestre los logs de todo el codigo (los
de error y informacion), format es el formato en que lo muestra: actime hora y
fecha del log, levelname es el TIPO de log (INFO, ERROR), message es el mensaje que
se muestra en el log

# Example Usage
try:
# Create a Bank Account
account1 = BankAccount(account_holder="Alice", initial_balance=1000)

# Perform transactions
account1.deposit(700)
account1.withdraw(200)
account1.check_balance()

# Attempt to withdraw more than the balance


account1.withdraw(2000)
except (ValueError, InsufficientFundsError) as e:
logging.error(f"Error: {e}") #manda el mensaje de error al log

También podría gustarte