mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-06 15:59:52 +03:00
This commit is contained in:
@@ -73,7 +73,6 @@ const SystemLog: FC = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const [errorMessage, setErrorMessage] = useState<string>();
|
const [errorMessage, setErrorMessage] = useState<string>();
|
||||||
const [reconnectTimeout, setReconnectTimeout] = useState<NodeJS.Timeout>();
|
|
||||||
const [logEntries, setLogEntries] = useState<LogEntries>({ events: [] });
|
const [logEntries, setLogEntries] = useState<LogEntries>({ events: [] });
|
||||||
const [lastIndex, setLastIndex] = useState<number>(0);
|
const [lastIndex, setLastIndex] = useState<number>(0);
|
||||||
|
|
||||||
@@ -162,7 +161,7 @@ const SystemLog: FC = () => {
|
|||||||
|
|
||||||
const fetchLog = useCallback(async () => {
|
const fetchLog = useCallback(async () => {
|
||||||
try {
|
try {
|
||||||
setLogEntries((await SystemApi.readLogEntries()).data);
|
await SystemApi.readLogEntries();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
setErrorMessage(extractErrorMessage(error, LL.PROBLEM_LOADING()));
|
setErrorMessage(extractErrorMessage(error, LL.PROBLEM_LOADING()));
|
||||||
}
|
}
|
||||||
@@ -176,20 +175,15 @@ const SystemLog: FC = () => {
|
|||||||
const es = new EventSource(addAccessTokenParameter(LOG_EVENTSOURCE_URL));
|
const es = new EventSource(addAccessTokenParameter(LOG_EVENTSOURCE_URL));
|
||||||
es.onmessage = onMessage;
|
es.onmessage = onMessage;
|
||||||
es.onerror = () => {
|
es.onerror = () => {
|
||||||
if (reconnectTimeout) {
|
es.close();
|
||||||
es.close();
|
reloadPage();
|
||||||
setReconnectTimeout(setTimeout(reloadPage, 1000));
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
es.close();
|
es.close();
|
||||||
if (reconnectTimeout) {
|
|
||||||
clearTimeout(reconnectTimeout);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
// eslint-disable-next-line
|
// eslint-disable-next-line
|
||||||
}, [reconnectTimeout]);
|
}, []);
|
||||||
|
|
||||||
const content = () => {
|
const content = () => {
|
||||||
if (!data) {
|
if (!data) {
|
||||||
@@ -210,6 +204,7 @@ const SystemLog: FC = () => {
|
|||||||
margin="normal"
|
margin="normal"
|
||||||
select
|
select
|
||||||
>
|
>
|
||||||
|
<MenuItem value={-1}>OFF</MenuItem>
|
||||||
<MenuItem value={3}>ERROR</MenuItem>
|
<MenuItem value={3}>ERROR</MenuItem>
|
||||||
<MenuItem value={4}>WARNING</MenuItem>
|
<MenuItem value={4}>WARNING</MenuItem>
|
||||||
<MenuItem value={5}>NOTICE</MenuItem>
|
<MenuItem value={5}>NOTICE</MenuItem>
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ void WebLogService::start() {
|
|||||||
limit_log_messages_ = maximum_log_messages_;
|
limit_log_messages_ = maximum_log_messages_;
|
||||||
compact_ = settings.weblog_compact;
|
compact_ = settings.weblog_compact;
|
||||||
uuid::log::Logger::register_handler(this, (uuid::log::Level)settings.weblog_level);
|
uuid::log::Logger::register_handler(this, (uuid::log::Level)settings.weblog_level);
|
||||||
|
if ((uuid::log::Level)settings.weblog_level == uuid::log::Level::OFF) {
|
||||||
|
log_messages_.clear();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,6 +75,9 @@ void WebLogService::log_level(uuid::log::Level level) {
|
|||||||
},
|
},
|
||||||
"local");
|
"local");
|
||||||
uuid::log::Logger::register_handler(this, level);
|
uuid::log::Logger::register_handler(this, level);
|
||||||
|
if (level == uuid::log::Level::OFF) {
|
||||||
|
log_messages_.clear();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t WebLogService::num_log_messages() const {
|
size_t WebLogService::num_log_messages() const {
|
||||||
@@ -130,7 +136,7 @@ void WebLogService::operator<<(std::shared_ptr<uuid::log::Message> message) {
|
|||||||
log_messages_.pop_front();
|
log_messages_.pop_front();
|
||||||
}
|
}
|
||||||
|
|
||||||
log_messages_.emplace_back(log_message_id_++, std::move(message));
|
log_messages_.emplace_back(++log_message_id_, std::move(message));
|
||||||
|
|
||||||
EMSESP::esp8266React.getNTPSettingsService()->read([&](NTPSettings & settings) {
|
EMSESP::esp8266React.getNTPSettingsService()->read([&](NTPSettings & settings) {
|
||||||
if (!settings.enabled || (time(nullptr) < 1500000000L)) {
|
if (!settings.enabled || (time(nullptr) < 1500000000L)) {
|
||||||
@@ -185,9 +191,9 @@ char * WebLogService::messagetime(char * out, const uint64_t t, const size_t buf
|
|||||||
|
|
||||||
// send to web eventsource
|
// send to web eventsource
|
||||||
void WebLogService::transmit(const QueuedLogMessage & message) {
|
void WebLogService::transmit(const QueuedLogMessage & message) {
|
||||||
auto jsonDocument = DynamicJsonDocument(EMSESP_JSON_SIZE_MEDIUM);
|
StaticJsonDocument<EMSESP_JSON_SIZE_MEDIUM> jsonDocument;
|
||||||
JsonObject logEvent = jsonDocument.to<JsonObject>();
|
JsonObject logEvent = jsonDocument.to<JsonObject>();
|
||||||
char time_string[25];
|
char time_string[25];
|
||||||
|
|
||||||
logEvent["t"] = messagetime(time_string, message.content_->uptime_ms, sizeof(time_string));
|
logEvent["t"] = messagetime(time_string, message.content_->uptime_ms, sizeof(time_string));
|
||||||
logEvent["l"] = message.content_->level;
|
logEvent["l"] = message.content_->level;
|
||||||
@@ -206,31 +212,8 @@ void WebLogService::transmit(const QueuedLogMessage & message) {
|
|||||||
|
|
||||||
// send the complete log buffer to the API, not filtering on log level
|
// send the complete log buffer to the API, not filtering on log level
|
||||||
void WebLogService::fetchLog(AsyncWebServerRequest * request) {
|
void WebLogService::fetchLog(AsyncWebServerRequest * request) {
|
||||||
size_t buffer = EMSESP_JSON_SIZE_XXLARGE + 192 * log_messages_.size();
|
log_message_id_tail_ = 0;
|
||||||
auto * response = new MsgpackAsyncJsonResponse(false, buffer);
|
request->send(200);
|
||||||
while (!response->getSize()) {
|
|
||||||
delete response;
|
|
||||||
buffer -= 1024;
|
|
||||||
response = new MsgpackAsyncJsonResponse(false, buffer);
|
|
||||||
}
|
|
||||||
JsonObject root = response->getRoot();
|
|
||||||
JsonArray log = root.createNestedArray("events");
|
|
||||||
|
|
||||||
log_message_id_tail_ = log_messages_.back().id_;
|
|
||||||
last_transmit_ = uuid::get_uptime_ms();
|
|
||||||
for (const auto & message : log_messages_) {
|
|
||||||
JsonObject logEvent = log.createNestedObject();
|
|
||||||
char time_string[25];
|
|
||||||
|
|
||||||
logEvent["t"] = messagetime(time_string, message.content_->uptime_ms, sizeof(time_string));
|
|
||||||
logEvent["l"] = message.content_->level;
|
|
||||||
logEvent["i"] = message.id_;
|
|
||||||
logEvent["n"] = message.content_->name;
|
|
||||||
logEvent["m"] = message.content_->text;
|
|
||||||
}
|
|
||||||
log_message_id_tail_ = log_messages_.back().id_;
|
|
||||||
response->setLength();
|
|
||||||
request->send(response);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// sets the values like level after a POST
|
// sets the values like level after a POST
|
||||||
|
|||||||
Reference in New Issue
Block a user