1
+ import java.time.LocalDateTime
2
+ import java.time.Duration
3
+
4
+ // Concepto de LOGS (Logging):
5
+ // Los logs son registros de eventos que ocurren durante la ejecución de un programa.
6
+ // Son cruciales para el diagnóstico de problemas, monitoreo del rendimiento y
7
+ // seguimiento de la actividad del sistema. En este ejemplo, implementaremos
8
+ // un sistema de logging simple para evitar problemas de permisos.
9
+
10
+ // Enum para los niveles de log
11
+ enum class LogLevel {
12
+ INFO , WARNING , ERROR , DEBUG , TRACE
13
+ }
14
+
15
+ // Clase simple para manejar logging
16
+ class SimpleLogger (private val name : String ) {
17
+ fun log (level : LogLevel , message : String ) {
18
+ println (" ${LocalDateTime .now()} [$level ] $name : $message " )
19
+ }
20
+
21
+ fun info (message : String ) = log(LogLevel .INFO , message)
22
+ fun warning (message : String ) = log(LogLevel .WARNING , message)
23
+ fun error (message : String ) = log(LogLevel .ERROR , message)
24
+ fun debug (message : String ) = log(LogLevel .DEBUG , message)
25
+ fun trace (message : String ) = log(LogLevel .TRACE , message)
26
+ }
27
+
28
+ class TaskManager {
29
+ private val logger = SimpleLogger (TaskManager ::class .java.simpleName)
30
+ private val tasks = mutableListOf<Task >()
31
+
32
+ fun addTask (name : String , description : String ) {
33
+ val startTime = LocalDateTime .now()
34
+ logger.info(" Iniciando añadir tarea: $name " )
35
+
36
+ tasks.add(Task (name, description))
37
+
38
+ val endTime = LocalDateTime .now()
39
+ val duration = Duration .between(startTime, endTime)
40
+ logger.info(" Tarea añadida: $name . Tiempo de ejecución: ${duration.toMillis()} ms" )
41
+ }
42
+
43
+ fun removeTask (name : String ) {
44
+ val startTime = LocalDateTime .now()
45
+ logger.warning(" Iniciando eliminación de tarea: $name " )
46
+
47
+ val removed = tasks.removeIf { it.name == name }
48
+ if (removed) {
49
+ logger.info(" Tarea eliminada: $name " )
50
+ } else {
51
+ logger.error(" No se encontró la tarea: $name " )
52
+ }
53
+
54
+ val endTime = LocalDateTime .now()
55
+ val duration = Duration .between(startTime, endTime)
56
+ logger.debug(" Tiempo de ejecución para eliminar tarea: ${duration.toMillis()} ms" )
57
+ }
58
+
59
+ fun listTasks () {
60
+ val startTime = LocalDateTime .now()
61
+ logger.info(" Listando todas las tareas" )
62
+
63
+ tasks.forEach { task ->
64
+ logger.debug(" Tarea: ${task.name} , Descripción: ${task.description} " )
65
+ }
66
+
67
+ val endTime = LocalDateTime .now()
68
+ val duration = Duration .between(startTime, endTime)
69
+ logger.trace(" Tiempo de ejecución para listar tareas: ${duration.toMillis()} ms" )
70
+ }
71
+ }
72
+
73
+ data class Task (val name : String , val description : String )
74
+
75
+ fun main () {
76
+ val taskManager = TaskManager ()
77
+
78
+ // Ejemplos de uso con diferentes niveles de severidad
79
+ taskManager.addTask(" Comprar víveres" , " Ir al supermercado y comprar alimentos" )
80
+ taskManager.addTask(" Hacer ejercicio" , " 30 minutos de cardio" )
81
+ taskManager.listTasks()
82
+ taskManager.removeTask(" Hacer ejercicio" )
83
+ taskManager.removeTask(" Tarea inexistente" )
84
+ taskManager.listTasks()
85
+ }
0 commit comments