25 12 25
Добавил логгер в настройки.Омталось созранение стате в бд поправить
This commit is contained in:
parent
d460ea2952
commit
c8ee9925a1
@ -29,6 +29,12 @@ dependencies {
|
||||
testImplementation platform('org.junit:junit-bom:5.10.0')
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter'
|
||||
|
||||
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
|
||||
|
||||
|
||||
runtimeOnly "org.apache.logging.log4j:log4j-core:2.24.3" // Реализация: Log4j2 пишет в файл/консоль
|
||||
runtimeOnly "org.apache.logging.log4j:log4j-slf4j2-impl:2.24.3" // Реализация: Log4j2 пишет в файл/консоль
|
||||
|
||||
|
||||
implementation project(':shine-server-config') // модуль настроек из application.properties
|
||||
|
||||
|
||||
@ -22,8 +22,7 @@ dependencies {
|
||||
// JSON (BchInfoManager)
|
||||
implementation 'com.fasterxml.jackson.core:jackson-databind:2.18.1'
|
||||
|
||||
// логгер
|
||||
implementation 'org.slf4j:slf4j-api:2.0.16'
|
||||
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
|
||||
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0'
|
||||
implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД
|
||||
|
||||
@ -16,8 +16,10 @@ java {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// обычно тут пусто, максимум логгер и тесты
|
||||
testImplementation 'org.junit.jupiter:junit-jupiter:5.11.0'
|
||||
|
||||
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
|
||||
|
||||
}
|
||||
|
||||
test {
|
||||
|
||||
@ -16,7 +16,10 @@ repositories {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'org.xerial:sqlite-jdbc:3.47.0.0'
|
||||
implementation 'org.xerial:sqlite-jdbc:3.47.0.0' // sqlite
|
||||
|
||||
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
|
||||
|
||||
implementation project(':shine-server-config') // модуль с настройками
|
||||
}
|
||||
|
||||
|
||||
@ -160,15 +160,12 @@ public class DatabaseInitializer {
|
||||
public_key_base64 TEXT NOT NULL,
|
||||
|
||||
size_limit INTEGER NOT NULL,
|
||||
size_bytes INTEGER NOT NULL,
|
||||
|
||||
file_size_bytes INTEGER NOT NULL,
|
||||
|
||||
last_global_number INTEGER NOT NULL,
|
||||
last_global_hash TEXT NOT NULL,
|
||||
updated_at_ms INTEGER NOT NULL,
|
||||
|
||||
-- Линии 0..7 (MVP: максимум 8 линий)
|
||||
line0_last_number INTEGER NOT NULL,
|
||||
line0_last_hash TEXT NOT NULL,
|
||||
line1_last_number INTEGER NOT NULL,
|
||||
|
||||
@ -135,7 +135,7 @@ public final class BlockchainStateDAO {
|
||||
ps.setString(i++, e.getBlockchainName());
|
||||
ps.setString(i++, nn(e.getLogin()));
|
||||
ps.setString(i++, nn(e.getPublicKeyBase64()));
|
||||
ps.setInt(i++, e.getSizeLimit());
|
||||
ps.setLong(i++, e.getSizeLimit());
|
||||
ps.setLong(i++, e.getFileSizeBytes());
|
||||
ps.setInt(i++, e.getLastGlobalNumber());
|
||||
ps.setString(i++, nn(e.getLastGlobalHash()));
|
||||
|
||||
@ -13,7 +13,9 @@ public final class BlockchainStateEntry {
|
||||
private String login;
|
||||
private String publicKeyBase64;
|
||||
|
||||
private int sizeLimit;
|
||||
/** Лимит (теперь long). */
|
||||
private long sizeLimit;
|
||||
|
||||
/** Размер файла блокчейна в байтах (то, что будем сверять/чинить при старте). */
|
||||
private long fileSizeBytes;
|
||||
|
||||
@ -28,7 +30,6 @@ public final class BlockchainStateEntry {
|
||||
private long updatedAtMs;
|
||||
|
||||
public BlockchainStateEntry() {
|
||||
// по умолчанию хэши пустые (как "0")
|
||||
for (int i = 0; i < 8; i++) lastLineHashes[i] = "";
|
||||
this.lastGlobalHash = "";
|
||||
}
|
||||
@ -36,7 +37,7 @@ public final class BlockchainStateEntry {
|
||||
public BlockchainStateEntry(String blockchainName,
|
||||
String login,
|
||||
String publicKeyBase64,
|
||||
int sizeLimit,
|
||||
long sizeLimit,
|
||||
long fileSizeBytes,
|
||||
int lastGlobalNumber,
|
||||
String lastGlobalHash,
|
||||
@ -74,8 +75,8 @@ public final class BlockchainStateEntry {
|
||||
public String getPublicKeyBase64() { return publicKeyBase64; }
|
||||
public void setPublicKeyBase64(String publicKeyBase64) { this.publicKeyBase64 = publicKeyBase64; }
|
||||
|
||||
public int getSizeLimit() { return sizeLimit; }
|
||||
public void setSizeLimit(int sizeLimit) { this.sizeLimit = sizeLimit; }
|
||||
public long getSizeLimit() { return sizeLimit; }
|
||||
public void setSizeLimit(long sizeLimit) { this.sizeLimit = sizeLimit; }
|
||||
|
||||
public long getFileSizeBytes() { return fileSizeBytes; }
|
||||
public void setFileSizeBytes(long fileSizeBytes) { this.fileSizeBytes = fileSizeBytes; }
|
||||
@ -106,12 +107,8 @@ public final class BlockchainStateEntry {
|
||||
lastLineHashes[line] = value == null ? "" : value;
|
||||
}
|
||||
|
||||
public int[] getLastLineNumbersCopy() {
|
||||
return Arrays.copyOf(lastLineNumbers, 8);
|
||||
}
|
||||
public String[] getLastLineHashesCopy() {
|
||||
return Arrays.copyOf(lastLineHashes, 8);
|
||||
}
|
||||
public int[] getLastLineNumbersCopy() { return Arrays.copyOf(lastLineNumbers, 8); }
|
||||
public String[] getLastLineHashesCopy() { return Arrays.copyOf(lastLineHashes, 8); }
|
||||
|
||||
public long getUpdatedAtMs() { return updatedAtMs; }
|
||||
public void setUpdatedAtMs(long updatedAtMs) { this.updatedAtMs = updatedAtMs; }
|
||||
|
||||
@ -22,8 +22,9 @@ dependencies {
|
||||
implementation 'org.eclipse.jetty:jetty-servlet:11.0.20'
|
||||
implementation 'org.eclipse.jetty.websocket:websocket-jetty-server:11.0.20'
|
||||
|
||||
implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД
|
||||
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
|
||||
|
||||
implementation project(':shine-server-db') // модуль для работы с БД содержит и сущности из БД и саму работу с БД
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -25,6 +25,8 @@ dependencies {
|
||||
implementation 'org.slf4j:slf4j-api:2.0.9'
|
||||
implementation 'ch.qos.logback:logback-classic:1.5.6'
|
||||
|
||||
implementation "org.slf4j:slf4j-api:2.0.16" // вызов логгера
|
||||
|
||||
implementation project(':shine-server-config') // модуль с настройками
|
||||
implementation project(':shine-server-crypto') // модуль сервера для работы с криптографией
|
||||
implementation project(':shine-server-blockchain') // модуль для работы с блокчейном
|
||||
|
||||
73
src/test/resources/log4j2.xml
Normal file
73
src/test/resources/log4j2.xml
Normal file
@ -0,0 +1,73 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Configuration status="WARN" monitorInterval="30">
|
||||
|
||||
<Properties>
|
||||
<!-- Папка логов -->
|
||||
<Property name="LOG_DIR">logs</Property>
|
||||
|
||||
<!-- Имя основного файла -->
|
||||
<Property name="APP_LOG">${LOG_DIR}/server.log</Property>
|
||||
|
||||
<!-- Шаблон для консоли (цветной) -->
|
||||
<Property name="CONSOLE_PATTERN">
|
||||
%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight{%-5level}{FATAL=red blink, ERROR=red, WARN=yellow, INFO=green, DEBUG=cyan, TRACE=blue}
|
||||
[%t] %c{1.} - %msg%n%throwable
|
||||
</Property>
|
||||
|
||||
<!-- Шаблон для файла (БЕЗ цветов) -->
|
||||
<Property name="FILE_PATTERN">
|
||||
%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%t] %c - %msg%n%throwable
|
||||
</Property>
|
||||
</Properties>
|
||||
|
||||
<Appenders>
|
||||
|
||||
<!-- Цветная консоль -->
|
||||
<Console name="Console" target="SYSTEM_OUT">
|
||||
<PatternLayout pattern="${CONSOLE_PATTERN}" />
|
||||
</Console>
|
||||
|
||||
<!-- Основной лог-файл + ротация по размеру и времени -->
|
||||
<RollingFile name="File"
|
||||
fileName="${APP_LOG}"
|
||||
filePattern="${LOG_DIR}/server-%d{yyyy-MM-dd}-%i.log.gz">
|
||||
<PatternLayout pattern="${FILE_PATTERN}" />
|
||||
|
||||
<Policies>
|
||||
<!-- каждый день новый файл -->
|
||||
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
|
||||
<!-- и если разросся -->
|
||||
<SizeBasedTriggeringPolicy size="50 MB"/>
|
||||
</Policies>
|
||||
|
||||
<!-- сколько файлов держать -->
|
||||
<DefaultRolloverStrategy max="60">
|
||||
<!-- общий лимит на архивы, чтобы диск не умер -->
|
||||
<Delete basePath="${LOG_DIR}" maxDepth="1">
|
||||
<IfFileName glob="server-*.log.gz"/>
|
||||
<IfAccumulatedFileSize exceeds="5 GB"/>
|
||||
</Delete>
|
||||
</DefaultRolloverStrategy>
|
||||
</RollingFile>
|
||||
|
||||
<!-- В консоль ТОЛЬКО ошибки (если захочешь), сейчас НЕ включаю.
|
||||
Если хочешь — скажи, включу отдельным appender-ом.
|
||||
-->
|
||||
</Appenders>
|
||||
|
||||
<Loggers>
|
||||
|
||||
<!-- Чтобы JUL (java.util.logging) реально шёл в log4j2 -->
|
||||
<Logger name="java.util.logging" level="info" additivity="false">
|
||||
<AppenderRef ref="Console"/>
|
||||
<AppenderRef ref="File"/>
|
||||
</Logger>
|
||||
|
||||
<!-- Root: всё пишем в файл, и в консоль тоже -->
|
||||
<Root level="info">
|
||||
<AppenderRef ref="Console"/>
|
||||
<AppenderRef ref="File"/>
|
||||
</Root>
|
||||
|
||||
</Loggers>
|
||||
</Configuration>
|
||||
Loading…
Reference in New Issue
Block a user