/
vorotov.a.vikt
/
MathEquGen
Обзор
Документация
Войти
/
vorotov.a.vikt
/
MathEquGen
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
src/main/java/com/example/chat/logger/LogMessageWriter.java
69 строк
2 KB
DudnikSlava
логирование запросов в модель, дополнительные опции копилки, исправление багов
30 ноя 2025, 16:04
30 ноя 2025, 16:04
f416784
Код
Авторство
О чём код?
package com.example.chat.logger; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import lombok.AllArgsConstructor; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import static com.fasterxml.jackson.databind.SerializationFeature.FAIL_ON_EMPTY_BEANS; @AllArgsConstructor public class LogMessageWriter { private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd-HH_mm_ss_SSS"); private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); static { OBJECT_MAPPER.disable(FAIL_ON_EMPTY_BEANS); OBJECT_MAPPER.enable(SerializationFeature.INDENT_OUTPUT); } private final Path logFolder; public void write(String traceId, String messageType, Object message) { try { var file = getFile(traceId, messageType); String messageText; if (!(message instanceof String)) { messageText = OBJECT_MAPPER.writeValueAsString(message); } else { messageText = message.toString(); } Files.writeString(file, messageText); } catch (Exception e) { throw new LogMessageException("Ошибка записи трейса '" + traceId + "' с типом '" + messageType + "'", e); } } private Path getFile(String traceId, String messageType) throws IOException { var now = LocalDateTime.now(); Path result = null; while (result == null) { String fileName = now.format(FORMATTER) + "_" + messageType + ".json"; var targetFolder = logFolder; if (traceId != null) { targetFolder = targetFolder.resolve(Paths.get(traceId)); } Files.createDirectories(targetFolder); result = targetFolder.resolve(Paths.get(fileName)); if (result.toFile().exists()) { result = null; now = now.plus(10, ChronoUnit.MICROS); } } return result; } public static void main(String[] args) throws IOException { LogMessageWriter logMessageWriter = new LogMessageWriter(Paths.get("C:\\agent\\equations2\\logs")); logMessageWriter.write("123", "REQUEST", new Object()); } }