Skip to content

Commit a4a4272

Browse files
committed
#25 Python go
1 parent 6e3f99b commit a4a4272

File tree

2 files changed

+265
-0
lines changed

2 files changed

+265
-0
lines changed

Roadmap/25 - LOGS/go/raynerpv2022.go

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
package main
2+
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+
# * DIFICULTAD EXTRA (opcional):
9+
# * Crea un programa ficticio de gestión de tareas que permita añadir, eliminar
10+
# * y listar dichas tareas.
11+
# * - Añadir: recibe nombre y descripción.
12+
# * - Eliminar: por nombre de la tarea.
13+
# * Implementa diferentes mensajes de log que muestren información según la
14+
# * tarea ejecutada (a tu elección).
15+
# * Utiliza el log para visualizar el tiempo de ejecución de cada tarea.
16+
# */
17+
18+
import (
19+
"fmt"
20+
"log"
21+
"math/rand"
22+
"os"
23+
"time"
24+
)
25+
26+
const (
27+
DEBUG = iota
28+
INFO
29+
WARN
30+
ERROR
31+
CRITICAL
32+
)
33+
34+
var loglevel = DEBUG
35+
36+
func getLoggingMessage(level int, message string) {
37+
if level >= loglevel {
38+
switch level {
39+
case DEBUG:
40+
log.Println("DEBUG: ", message)
41+
case INFO:
42+
log.Println("INFO: ", message)
43+
case WARN:
44+
log.Println("WARN: ", message)
45+
case ERROR:
46+
log.Println("ERROR: ", message)
47+
case CRITICAL:
48+
log.Println("CRITICAL: ", message)
49+
50+
}
51+
}
52+
53+
}
54+
55+
type TaskManager struct {
56+
tasks map[string]string
57+
}
58+
59+
func (t *TaskManager) Create(name, desc string) {
60+
_, exist := t.tasks[name]
61+
if exist {
62+
getLoggingMessage(ERROR, fmt.Sprintf(" Task %v already created\n", name))
63+
} else {
64+
t.tasks[name] = desc
65+
getLoggingMessage(INFO, fmt.Sprintf(" Task %v created succesfully\n", name))
66+
}
67+
68+
}
69+
70+
func (t *TaskManager) Delete(name string) {
71+
_, exist := t.tasks[name]
72+
if !exist {
73+
getLoggingMessage(ERROR, fmt.Sprintf(" Task %v Not Found\n", name))
74+
} else {
75+
delete(t.tasks, name)
76+
getLoggingMessage(INFO, fmt.Sprintf(" Task %v delete succesfully\n", name))
77+
}
78+
79+
}
80+
81+
func (t *TaskManager) Display() {
82+
83+
getLoggingMessage(INFO, fmt.Sprintf(" Task %v \n", t.tasks))
84+
}
85+
86+
func (t *TaskManager) Execute(name string) {
87+
_, exist := t.tasks[name]
88+
if exist {
89+
getLoggingMessage(INFO, fmt.Sprintf(" Task %v EXECUTING ... \n", name))
90+
start := time.Now().Second()
91+
getLoggingMessage(DEBUG, fmt.Sprintf(" Task %v START TIME %v ... \n", name, start))
92+
random_sleep := rand.Intn(10)
93+
time.Sleep((time.Second * time.Duration(random_sleep)))
94+
end := time.Now().Second()
95+
getLoggingMessage(DEBUG, fmt.Sprintf(" Task %v END TIME %v ... \n", name, end))
96+
getLoggingMessage(DEBUG, fmt.Sprintf(" Task %v DURATION TIME %v ... \n", name, random_sleep))
97+
getLoggingMessage(INFO, fmt.Sprintf(" Task %v DEAD ... \n", name))
98+
} else {
99+
getLoggingMessage(CRITICAL, fmt.Sprintf(" Task %v NOT EXECUTED, CRITICAL PARAMETER, NUCLEAR WAR is comming... \n", name))
100+
}
101+
102+
}
103+
104+
func main() {
105+
// log.Println("Error Normalito")
106+
107+
// log.Panic("Error Panic")
108+
// log.Fatalln("Error Fatal")
109+
fmt.Println("Loggin in File (F) or Display (D)")
110+
var op string
111+
_, e := fmt.Scan(&op)
112+
if e != nil {
113+
log.Fatal(e)
114+
}
115+
if op == "F" {
116+
117+
f, e := os.OpenFile("app.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
118+
if e != nil {
119+
getLoggingMessage(ERROR, "Message ERROR, opening log file")
120+
}
121+
defer f.Close()
122+
log.SetOutput(f)
123+
log.SetFlags(log.Ldate | log.Ltime)
124+
}
125+
126+
getLoggingMessage(INFO, "Message INFO")
127+
getLoggingMessage(DEBUG, "Message DEBUG")
128+
getLoggingMessage(WARN, "Message WARNING")
129+
getLoggingMessage(ERROR, "Message ERROR")
130+
getLoggingMessage(CRITICAL, "Message CRITICAL")
131+
log.Println("Errores")
132+
133+
// ?Extra
134+
task_task := TaskManager{map[string]string{}}
135+
task_task.Create("t1", "ggggg")
136+
task_task.Create("t1", "ggggg")
137+
task_task.Create("t2", "ggggg")
138+
task_task.Create("t3", "ggggg")
139+
task_task.Delete("tqq1")
140+
task_task.Delete("t1")
141+
task_task.Display()
142+
task_task.Execute("t1")
143+
task_task.Execute("t3")
144+
task_task.Execute("t4")
145+
task_task.Display()
146+
147+
}
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
# /*
2+
# * EJERCICIO:
3+
# * Explora el concepto de "logging" en tu lenguaje. Configúralo y muestra
4+
# * un ejemplo con cada nivel de "severidad" disponible.
5+
# *
6+
# * DIFICULTAD EXTRA (opcional):
7+
# * Crea un programa ficticio de gestión de tareas que permita añadir, eliminar
8+
# * y listar dichas tareas.
9+
# * - Añadir: recibe nombre y descripción.
10+
# * - Eliminar: por nombre de la tarea.
11+
# * Implementa diferentes mensajes de log que muestren información según la
12+
# * tarea ejecutada (a tu elección).
13+
# * Utiliza el log para visualizar el tiempo de ejecución de cada tarea.
14+
# */
15+
16+
import logging
17+
18+
print("Logging in File (F) or Display (D)")
19+
op = input()
20+
if op == "F":
21+
logging.basicConfig(filename="log_my.log",level=logging.DEBUG,
22+
format='%(asctime)s - %(levelname)s - %(message)s')
23+
else :
24+
logging.basicConfig(level=logging.DEBUG,
25+
format='%(asctime)s - %(levelname)s - %(message)s')
26+
27+
28+
logging.debug("Mensaje de Error en Debug")
29+
logging.warning("Esto es una Warning")
30+
logging.critical("Esta critica la cosa")
31+
logging.info("Solo es info")
32+
logging.error("Error se formo el despelote")
33+
34+
35+
# EXTRA
36+
import time, datetime, random
37+
38+
class Dutty:
39+
40+
41+
42+
def __init__(self):
43+
self.dutty = {}
44+
45+
46+
def create(self, dutty: str, desc: str ):
47+
if dutty in self.dutty:
48+
logging.error(f"Tarea {dutty} is already created")
49+
else:
50+
51+
self.dutty[dutty] = desc
52+
logging.info(f"Tarea {dutty} Succesfully created ")
53+
logging.debug(f"Numero de tareas {len (self.dutty)}")
54+
55+
56+
def delete(self,name: str):
57+
58+
if name in self.dutty:
59+
60+
del self.dutty[name]
61+
logging.info(f"Tarea {name} Delete succesfully")
62+
else:
63+
logging.error(f"Tarea {name} Not Found")
64+
logging.debug(f"Numero de tareas {len (self.dutty)}")
65+
66+
67+
def display(self):
68+
logging.info("Lista de tareas")
69+
for i,v in self.dutty.items():
70+
logging.info(f" Tarea {i} Descripcion {v}")
71+
72+
73+
74+
def execute (self,name):
75+
if name in self.dutty:
76+
logging.debug(f"Tarea {name} executandose... ")
77+
start = datetime.datetime.now()
78+
logging.warning(f"Tarea {name} Inicio {start.strftime("%H:%M:%S")} ")
79+
time_exec = random.randint(1,10)
80+
logging.warning(f"duracion estimada {time_exec}s")
81+
time.sleep(time_exec)
82+
end = datetime.datetime.now()
83+
logging.warning(f"fin {end.strftime("%H:%M:%S")} ")
84+
logging.debug(f"Tarea {name} terminada")
85+
86+
else:
87+
logging.error(f"Tarea {name} Not found")\
88+
89+
90+
91+
list_dutty = Dutty()
92+
93+
list_dutty.create("t1","asasasass")
94+
list_dutty.create("t2", "asasasass")
95+
list_dutty.create("t2", "asasasass")
96+
list_dutty.delete("t10")
97+
list_dutty.create("t3", "asasasass")
98+
list_dutty.delete("t1")
99+
list_dutty.create("t4", "asasasass")
100+
list_dutty.create("t5", "asasasass")
101+
list_dutty.create("t6", "asasasass")
102+
list_dutty.create("t7", "asasasass")
103+
104+
list_dutty.execute("t3" )
105+
list_dutty.execute("t2" )
106+
list_dutty.execute("t1" )
107+
list_dutty.execute("t5" )
108+
list_dutty.execute("t11" )
109+
110+
list_dutty.display()
111+
112+
113+
114+
115+
116+
117+
118+

0 commit comments

Comments
 (0)