1+ import logging
2+ import time
3+ """
4+ * EJERCICIO:
5+ * Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra
6+ * un ejemplo con cada nivel de "severidad" disponible.
7+
8+ """
9+
10+
11+ # CONFIGURACIÓN
12+ logging .basicConfig (level = logging .DEBUG ,
13+ format = "%(asctime)s - %(levelname)s - %(message)s" )
14+
15+ # NIVELES DE SEVERIDAD
16+ logging .debug ("Este es un mensaje de debug" )
17+ logging .info ("Este es un mensaje de info" )
18+ logging .warning ("Este es un mensaje de warning" )
19+ logging .error ("Este es un mensaje de error" )
20+ logging .critical ("Este es un mensaje critical" )
21+
22+
23+ """
24+ DIFICULTAD EXTRA (opcional):
25+ * Crea un programa ficticio de gestión de tareas que permita añadir, eliminar
26+ * y listar dichas tareas.
27+ * - Añadir: recibe nombre y descripción.
28+ * - Eliminar: por nombre de la tarea.
29+ * Implementa diferentes mensajes de log que muestren información según la
30+ * tarea ejecutada (a tu elección).
31+ * Utiliza el log para visualizar el tiempo de ejecución de cada tarea.
32+ */
33+
34+ """
35+
36+
37+ class TaskManager :
38+
39+ def __init__ (self ) -> None :
40+ self .task = {}
41+
42+ def _print_time_ (function ):
43+ def count_time (* args ):
44+ start_time = time .time ()
45+ result = function (* args )
46+ end_time = time .time ()
47+ logging .debug (f"Tiempo de ejecución { end_time - start_time :.6f} segundos." )
48+ return result
49+ return count_time
50+
51+ @_print_time_
52+ def add_task (self , name , description ):
53+ if name in self .task .keys ():
54+ logging .error (f"Se ha intentado agregar la tarea { name } que ya existía" )
55+ else :
56+ self .task [name ] = description
57+ logging .info (f"La tarea { name } se ha añadido exitosamente" )
58+ logging .info (f"Hay { len (self .task )} tareas almacenadas" )
59+ end_time = time .time ()
60+
61+ @_print_time_
62+ def show_task (self ):
63+ if not self .task :
64+ logging .warning ("No había tareas para mostrar" )
65+ else :
66+ for key , value in self .task .items ():
67+ print (f"Task: { key } - Description: { value } " )
68+ logging .info (f"Se han mostrado correctamente { len (self .task )} tareas" )
69+
70+ @_print_time_
71+ def delete_task (self , name ):
72+ if name in self .task .keys ():
73+ del self .task [name ]
74+ logging .info (f"La tarea { name } se ha eliminado exitosamente" )
75+ else :
76+ logging .error ("Se ha intentado eliminar una tarea que no existe" )
77+ logging .info (f"Hay { len (self .task )} tareas almacenadas" )
78+
79+
80+
81+
82+
83+ manager = TaskManager ()
84+ manager .add_task ("programacion" , "ejercicios" )
85+ manager .add_task ("programacion" , "ejercicios" )
86+ manager .add_task ("Machine learning" , "ejercicios" )
87+ manager .add_task ("Python" , "ejercicios" )
88+ manager .add_task ("estadistica" , "ejercicios" )
89+ manager .show_task ()
90+ manager .delete_task ("maths" )
91+ manager .delete_task ("estadistica" )
92+ manager .delete_task ("programacion" )
93+ manager .show_task ()
0 commit comments