Skip to content

Commit edfc995

Browse files
authored
Merge pull request mouredev#7329 from danhingar/ejercicio25
#25 - Java
2 parents 2a3f4bf + 570c200 commit edfc995

File tree

1 file changed

+182
-0
lines changed

1 file changed

+182
-0
lines changed

Roadmap/25 - LOGS/java/danhingar.java

+182
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
import java.text.SimpleDateFormat;
2+
import java.time.Duration;
3+
import java.time.LocalTime;
4+
import java.util.Date;
5+
import java.util.HashSet;
6+
import java.util.Set;
7+
import java.util.logging.ConsoleHandler;
8+
import java.util.logging.Formatter;
9+
import java.util.logging.Handler;
10+
import java.util.logging.Level;
11+
import java.util.logging.LogRecord;
12+
import java.util.logging.Logger;
13+
14+
public class danhingar {
15+
private final static Logger log = Logger.getLogger(danhingar.class.getName());
16+
17+
public static void main(String[] args) {
18+
19+
configLog();
20+
21+
log.info("LOG INFO");
22+
log.warning("LOG WARNING");
23+
log.severe("LOG SEVERE");
24+
log.config("LOG CONFIG");
25+
log.fine("LOG FINE");
26+
log.finest("LOG FINEST");
27+
log.finer("LOG FINER");
28+
29+
TaskManager taskManager = new TaskManager();
30+
taskManager.listTasks();
31+
taskManager.addTask("Pan", "Comprar 5 barras de pan");
32+
taskManager.addTask("Python", "Estudiar Python");
33+
taskManager.listTasks();
34+
taskManager.deleteTask("Python");
35+
taskManager.listTasks();
36+
taskManager.addTask("Pan", "Comprar 5 barras de pan");
37+
taskManager.deleteTask("Python");
38+
taskManager.addTask("Task1", "Busqueda");
39+
}
40+
41+
static void configLog() {
42+
43+
ConsoleHandler consoleHandler = new ConsoleHandler();
44+
consoleHandler.setLevel(Level.ALL);
45+
46+
consoleHandler.setFormatter(new CustomFormatter());
47+
48+
log.addHandler(consoleHandler);
49+
50+
log.setLevel(Level.ALL);
51+
52+
// Eliminando los handler existentes
53+
Logger parentLogger = log.getParent();
54+
for (Handler handler : parentLogger.getHandlers()) {
55+
parentLogger.removeHandler(handler);
56+
}
57+
58+
}
59+
60+
}
61+
62+
class CustomFormatter extends Formatter {
63+
@Override
64+
public String format(LogRecord record) {
65+
// Formato personalizado: timestamp - level - mensaje
66+
String timestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(record.getMillis()));
67+
String level = record.getLevel().getName();
68+
String message = formatMessage(record);
69+
70+
return String.format("%s - %s - %s%n", timestamp, level, message);
71+
}
72+
}
73+
74+
// EXTRA
75+
class TaskManager {
76+
77+
private final static Logger log = Logger.getLogger(danhingar.class.getName());
78+
79+
private Set<Task> tasks;
80+
81+
public TaskManager() {
82+
tasks = new HashSet<>();
83+
}
84+
85+
public void addTask(String name, String description) {
86+
LocalTime start = LocalTime.now();
87+
if (tasks.stream().anyMatch(t -> t.getName().equals(name))) {
88+
log.warning(String.format("Se ha intentado añadir una tarea que ya existe: %s", name));
89+
}
90+
Task task = new Task(name, description);
91+
tasks.add(task);
92+
log.info(String.format("Tarea añadida: %s", name));
93+
log.fine(String.format("Número de tareas: %d", tasks.size()));
94+
LocalTime end = LocalTime.now();
95+
printTime(start, end);
96+
}
97+
98+
public void listTasks() {
99+
LocalTime start = LocalTime.now();
100+
if (tasks.size() > 0) {
101+
log.info("Se va a imprimir el listado de tareas");
102+
for (Task task : tasks) {
103+
System.out.println(task.toString());
104+
}
105+
} else {
106+
log.info("No hay tareas para mostrar.");
107+
}
108+
LocalTime end = LocalTime.now();
109+
printTime(start, end);
110+
111+
}
112+
113+
public void deleteTask(String name) {
114+
LocalTime start = LocalTime.now();
115+
if (!tasks.stream().anyMatch(t -> t.getName().equals(name))) {
116+
log.warning(String.format("Se ha intentado eliminar una tarea que no existe:", name));
117+
} else {
118+
tasks.remove(tasks.stream().filter(t -> t.getName().equals(name)).findFirst().get());
119+
log.info(String.format("Se ha eliminado la tarea: %s", name));
120+
log.fine(String.format("Número de tareas: %d", tasks.size()));
121+
}
122+
LocalTime end = LocalTime.now();
123+
printTime(start, end);
124+
125+
}
126+
127+
private void printTime(LocalTime start, LocalTime end) {
128+
float time = (float) Duration.between(start, end).toNanos()/1000000000;
129+
log.finest(String.format("Tiempo de ejecución: %.6f", time));
130+
}
131+
132+
static void configLog() {
133+
134+
ConsoleHandler consoleHandler = new ConsoleHandler();
135+
consoleHandler.setLevel(Level.ALL);
136+
137+
consoleHandler.setFormatter(new CustomFormatter());
138+
139+
log.addHandler(consoleHandler);
140+
141+
log.setLevel(Level.ALL);
142+
143+
// Eliminando los handler existentes
144+
Logger parentLogger = log.getParent();
145+
for (Handler handler : parentLogger.getHandlers()) {
146+
parentLogger.removeHandler(handler);
147+
}
148+
149+
}
150+
}
151+
152+
class Task {
153+
private String name;
154+
private String description;
155+
156+
public Task(String name, String description) {
157+
this.name = name;
158+
this.description = description;
159+
}
160+
161+
@Override
162+
public String toString() {
163+
return "Task [name=" + name + ", description=" + description + "]";
164+
}
165+
166+
public String getName() {
167+
return name;
168+
}
169+
170+
public void setName(String name) {
171+
this.name = name;
172+
}
173+
174+
public String getDescription() {
175+
return description;
176+
}
177+
178+
public void setDescription(String description) {
179+
this.description = description;
180+
}
181+
182+
}

0 commit comments

Comments
 (0)