Skip to content

Commit 211317b

Browse files
authored
Merge pull request mouredev#4405 from blackriper/main
Reto#25-kotlin
2 parents 10457be + 51cf70e commit 211317b

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed
+123
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
import io.github.oshai.kotlinlogging.KotlinLogging
2+
3+
4+
/*
5+
Logs
6+
Los logs son mensajes que sirven como historial de eventos sucedidos en la aplicacion
7+
estos sirven para informar a los desarrolladores sobre diferentes eventos que ocurren en la aplicacion
8+
9+
los logs se clasifican en
10+
- Debug
11+
- Trace
12+
- Info
13+
- Warning
14+
- Error
15+
16+
como sus nombres los indican estos son eventos que ocurren en la aplicacion al clasficarlos
17+
tambien se les puede dar prioridad esto ayuda a configurar parametros para dar a conocer a los
18+
desarrolladores eventos que ocurren en la aplicacion. por lo general los Error tienen mayor prioridad
19+
20+
depedencias
21+
https://github.com/oshai/kotlin-logging logger
22+
https://mvnrepository.com/artifact/org.slf4j/slf4j-api depedencia padre
23+
https://mvnrepository.com/artifact/ch.qos.logback/logback-classic/1.5.6 formateo y prioridada de los logs
24+
https://github.com/Tuxdude/logback-colorizer dar color a los logs opcional pero quedan bonitos con colores
25+
26+
archivo basico de formatos de logs src/main/resources/logback.xml
27+
<property scope="context" name="COLORIZER_COLORS" value="red@,yellow@,green@,blue@,cyan@" />
28+
<conversionRule conversionWord="colorize" converterClass="org.tuxdude.logback.extensions.LogColorizer" />
29+
<appender name="STDOUT" class="ConsoleAppender">
30+
<encoder class="PatternLayoutEncoder">
31+
<pattern>%colorize(%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} -- %msg%n) </pattern>
32+
</encoder>
33+
</appender>
34+
35+
<root level="trace">
36+
<appender-ref ref="STDOUT" />
37+
</root>
38+
</configuration>
39+
40+
tutorial basico
41+
https://saltnlight5.blogspot.com/2013/08/how-to-configure-slf4j-with-different.html
42+
43+
*/
44+
45+
val logger= KotlinLogging.logger { }
46+
47+
fun exampleWithLogs() {
48+
// probando alguna funcion
49+
logger.debug { "debug message" }
50+
// seguimientos de eventos en la aplicacion conexion de base de datos etc
51+
logger.trace { "trace message" }
52+
// informamos sobre cosas que ocurren en la aplicacion
53+
logger.info { "info message" }
54+
// informamos sobre eventos que podrian generar error en caso de no atederse
55+
logger.warn { "warn message" }
56+
// informamos sobre eventos de error en la aplicacion
57+
logger.error { "error message" }
58+
}
59+
60+
// ejercicio extra
61+
data class Task(val name:String,val description:String,var done:Boolean=false)
62+
63+
interface TaskRepository{
64+
fun save(task:Task)
65+
fun delete(name:String)
66+
fun completedTask(name: String)
67+
fun getAll():List<Task>
68+
fun getTaskBy(predicate:(Task)->Boolean):List<Task>
69+
}
70+
71+
class TaskManager:TaskRepository{
72+
private val tasks= mutableListOf<Task>()
73+
override fun save(task: Task) {
74+
logger.trace { "new task recived for add list" }
75+
val registred=tasks.add(task)
76+
if(registred) logger.info { "task ${task.name} was added to the list" }
77+
}
78+
79+
override fun delete(name: String) {
80+
logger.trace { "task $name recived for deleted" }
81+
val deleted=tasks.removeIf { it.name==name }
82+
if(deleted) logger.info { "task $name was deleted" }
83+
else logger.error { "task $name not found" }
84+
}
85+
86+
override fun completedTask(name: String) {
87+
logger.trace { "task $name recived for completed" }
88+
tasks.find { it.name==name }.let {
89+
if (it==null) logger.warn {"task name is null value" }
90+
it?.done=true
91+
logger.info { "task $name was completed" }
92+
}
93+
}
94+
95+
override fun getAll(): List<Task> {
96+
logger.trace { "get all tasks" }
97+
return tasks
98+
}
99+
100+
override fun getTaskBy(predicate: (Task) -> Boolean): List<Task>{
101+
logger.trace {"find task with predicate"}
102+
return tasks.filter { predicate(it) }
103+
}
104+
105+
}
106+
107+
108+
109+
fun main() {
110+
exampleWithLogs()
111+
val task1=Task("Clean my room","clean my room")
112+
val task3=Task("migration","migrate maven to kotlin dsl")
113+
val task4=Task("solution for programming roadmap","create a solution for programming roadmap")
114+
val manager=TaskManager()
115+
manager.save(task1)
116+
manager.save(task3)
117+
manager.save(task4)
118+
manager.delete("migration")
119+
manager.completedTask("Clean my room")
120+
manager.getAll().forEach { println(it) }
121+
manager.getTaskBy { it.done==true }.forEach { println(it) }
122+
123+
}

0 commit comments

Comments
 (0)