Skip to content

Commit e52554d

Browse files
committed
#25 - Kotlin
1 parent 0ec83ae commit e52554d

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

Roadmap/25 - LOGS/kotlin/eulogioep.kt

+85
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
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

Comments
 (0)