SHiNE-server/shine-server-log/src/main/java/shine/log/BlockchainAdminNotifier.java
AidarKC 25aa57dc5e 25 12 25
Добавил восстановление на случай застрявших темп файлов.  Оно работает!  И уведомление админа о критических ощибках, если файлы блокчейна поврежденны
2025-12-25 17:08:08 +03:00

60 lines
2.2 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package shine.log;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* ===============================================================
* BlockchainAdminNotifier — уведомления администратору о критических
* ошибках консистентности блокчейн-файлов.
*
* Сейчас:
* - пишет МАКСИМАЛЬНО ЗАМЕТНЫЙ лог
*
* TODO:
* - реальная отправка уведомления администратору:
* * Telegram bot / email / SMS / webhook / Sentry / PagerDuty
* * желательно с hostname, временем, именем блокчейна, размерами и stacktrace
* ===============================================================
*/
public final class BlockchainAdminNotifier {
private static final Logger log = LoggerFactory.getLogger(BlockchainAdminNotifier.class);
private BlockchainAdminNotifier() {}
public static void critical(String message) {
critical(message, null);
}
public static void critical(String message, Throwable t) {
String bannerTop =
"\n" +
"=================================================================\n" +
"==================== !!! КРИТИЧЕСКАЯ ОШИБКА !!! ===============\n" +
"=================================================================";
String bannerBottom =
"=================================================================\n" +
"==================== !!! НУЖНО ВМЕШАТЕЛЬСТВО !!! ===============\n" +
"=================================================================\n";
if (t == null) {
log.error("{}\n{}\n{}",
bannerTop,
message,
bannerBottom
);
} else {
log.error("{}\n{}\n{}",
bannerTop,
message,
bannerBottom,
t
);
}
// TODO: Реальная отправка уведомления администратору (Telegram/email/webhook/Sentry)
}
}