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