Добавил восстановление на случай застрявших темп файлов.  Оно работает!  И уведомление админа о критических ощибках, если файлы блокчейна поврежденны
This commit is contained in:
AidarKC
2025-12-25 17:08:08 +03:00
parent 6c2449f623
commit 25aa57dc5e
10 changed files with 139 additions and 85 deletions
+27
View File
@@ -0,0 +1,27 @@
plugins {
id 'java'
}
group = 'shine'
version = '1.0.0'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
}
java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
@@ -0,0 +1,60 @@
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)
}
}