mirror of https://github.com/nymea/nymea.git
Allow configuring warning/info/debug logging levels
parent
45081ad64e
commit
48dd263cd9
|
|
@ -145,23 +145,23 @@ function loadLoggingCategorySettings() {
|
|||
|
||||
for (var loggingCategory in responseMap['loggingCategories']) {
|
||||
var loggingCategoryElement = document.getElementById("debug-category-" + loggingCategory)
|
||||
loggingCategoryElement.checked = responseMap['loggingCategories'][loggingCategory]
|
||||
console.log("Setting category", loggingCategory, "to", responseMap['loggingCategories'][loggingCategory])
|
||||
loggingCategoryElement.value = responseMap['loggingCategories'][loggingCategory]
|
||||
}
|
||||
|
||||
for (var loggingCategory in responseMap['loggingCategoriesPlugins']) {
|
||||
var loggingCategoryElement = document.getElementById("debug-category-" + loggingCategory)
|
||||
loggingCategoryElement.checked = responseMap['loggingCategoriesPlugins'][loggingCategory]
|
||||
loggingCategoryElement.value = responseMap['loggingCategoriesPlugins'][loggingCategory]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function toggleLoggingCategory(categoryName) {
|
||||
var switchElement = document.getElementById("debug-category-" + categoryName)
|
||||
console.log("Toggle logging category", categoryName, switchElement.checked)
|
||||
function toggleLoggingCategory(categoryName, obj) {
|
||||
console.log("Select changed:", categoryName, obj.value)
|
||||
|
||||
var fileRequestUrl = "/debug/logging-categories?" + categoryName + "=" + (switchElement.checked ? "true" : "false");
|
||||
var fileRequestUrl = "/debug/logging-categories?" + categoryName + "=" + obj.value;
|
||||
|
||||
// Request report file generation
|
||||
var request = new XMLHttpRequest();
|
||||
|
|
|
|||
|
|
@ -283,6 +283,52 @@ button::-moz-focus-inner { border: 0; }
|
|||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.debug-select {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
border-radius: 4px;
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
.debug-select {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
border: 0 none;
|
||||
padding: 0 10px;
|
||||
background: #fff;
|
||||
color: #666;
|
||||
border: 1px solid #e5e5e5;
|
||||
transition: .2s ease-in-out;
|
||||
transition-property: color,background-color,border;
|
||||
}
|
||||
|
||||
.debug-select:not([multiple]):not([size]) {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
padding-right: 20px;
|
||||
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%2224%22%20height%3D%2216%22%20viewBox%3D%220%200%2024%2016%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%201%209%206%2015%206%22%20%2F%3E%0A%20%20%20%20%3Cpolygon%20fill%3D%22%23666%22%20points%3D%2212%2013%209%208%2015%208%22%20%2F%3E%0A%3C%2Fsvg%3E%0A");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 100% 50%;
|
||||
}
|
||||
|
||||
|
||||
.debug-select:not([multiple]):not([size]) {
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.debug-select:not([multiple]):not([size]) option {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.debug-select:focus {
|
||||
outline:0;
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
border-color: #57baae;
|
||||
}
|
||||
|
||||
/* The switch - the box around the slider */
|
||||
.switch {
|
||||
position: relative;
|
||||
|
|
|
|||
|
|
@ -410,12 +410,32 @@ HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath, c
|
|||
QVariantMap dataMap;
|
||||
QVariantMap loggingCategories;
|
||||
foreach (const QString &loggingCategory, NymeaCore::loggingFilters()) {
|
||||
loggingCategories.insert(loggingCategory, settings.value(QString("%1.debug").arg(loggingCategory), false).toBool());
|
||||
QString level = "critical";
|
||||
if (settings.value(QString("%1.warning").arg(loggingCategory), true).toBool()) {
|
||||
level = "warning";
|
||||
}
|
||||
if (settings.value(QString("%1.info").arg(loggingCategory), true).toBool()) {
|
||||
level = "info";
|
||||
}
|
||||
if (settings.value(QString("%1.debug").arg(loggingCategory), false).toBool()) {
|
||||
level = "debug";
|
||||
}
|
||||
loggingCategories.insert(loggingCategory, level);
|
||||
}
|
||||
dataMap.insert("loggingCategories", loggingCategories);
|
||||
QVariantMap loggingCategoriesPlugins;
|
||||
foreach (const QString &loggingCategory, NymeaCore::loggingFiltersPlugins()) {
|
||||
loggingCategoriesPlugins.insert(loggingCategory, settings.value(QString("%1.debug").arg(loggingCategory), false).toBool());
|
||||
QString level = "critical";
|
||||
if (settings.value(QString("%1.warning").arg(loggingCategory), true).toBool()) {
|
||||
level = "warning";
|
||||
}
|
||||
if (settings.value(QString("%1.info").arg(loggingCategory), true).toBool()) {
|
||||
level = "info";
|
||||
}
|
||||
if (settings.value(QString("%1.debug").arg(loggingCategory), false).toBool()) {
|
||||
level = "debug";
|
||||
}
|
||||
loggingCategoriesPlugins.insert(loggingCategory, level);
|
||||
}
|
||||
dataMap.insert("loggingCategoriesPlugins", loggingCategoriesPlugins);
|
||||
|
||||
|
|
@ -434,9 +454,25 @@ HttpReply *DebugServerHandler::processDebugRequest(const QString &requestPath, c
|
|||
continue;
|
||||
}
|
||||
|
||||
bool enabled = QVariant(requestQuery.queryItems().at(i).second).toBool();
|
||||
qCDebug(dcDebugServer()) << "Logging category" << category << (enabled ? "enabled" : "disabled");
|
||||
settings.setValue(QString("%1.debug").arg(category), (enabled ? "true" : "false"));
|
||||
QString level = QVariant(requestQuery.queryItems().at(i).second).toString();
|
||||
qCDebug(dcDebugServer()) << "Logging category" << category << level;
|
||||
if (level == "debug") {
|
||||
settings.setValue(QString("%1.debug").arg(category), true);
|
||||
settings.setValue(QString("%1.info").arg(category), true);
|
||||
settings.setValue(QString("%1.warning").arg(category), true);
|
||||
} else if (level == "info") {
|
||||
settings.setValue(QString("%1.debug").arg(category), false);
|
||||
settings.setValue(QString("%1.info").arg(category), true);
|
||||
settings.setValue(QString("%1.warning").arg(category), true);
|
||||
} else if (level == "warning"){
|
||||
settings.setValue(QString("%1.debug").arg(category), false);
|
||||
settings.setValue(QString("%1.info").arg(category), false);
|
||||
settings.setValue(QString("%1.warning").arg(category), true);
|
||||
} else {
|
||||
settings.setValue(QString("%1.debug").arg(category), false);
|
||||
settings.setValue(QString("%1.info").arg(category), false);
|
||||
settings.setValue(QString("%1.warning").arg(category), false);
|
||||
}
|
||||
}
|
||||
|
||||
// Update logging filter rules according to the nw settings
|
||||
|
|
@ -1806,22 +1842,29 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
|||
QStringList loggingCategories = NymeaCore::loggingFilters();
|
||||
loggingCategories.sort();
|
||||
|
||||
QHash<QString, QString> categoryMap = {
|
||||
{"debug", "🐞 Debug"},
|
||||
{"info", "ℹ️ Info"},
|
||||
{"warning", "⚠️ Warning"},
|
||||
{"critical", "🔥 Critical"}
|
||||
};
|
||||
foreach (const QString &loggingCategory, loggingCategories) {
|
||||
writer.writeStartElement("div");
|
||||
writer.writeAttribute("class", "debug-category");
|
||||
writer.writeTextElement("p", loggingCategory);
|
||||
writer.writeStartElement("label");
|
||||
writer.writeAttribute("class", "switch");
|
||||
writer.writeStartElement("input");
|
||||
writer.writeAttribute("id", QString("debug-category-%1").arg(loggingCategory));
|
||||
writer.writeAttribute("type", "checkbox");
|
||||
writer.writeAttribute("onclick", QString("toggleLoggingCategory('%1')").arg(loggingCategory));
|
||||
writer.writeEndElement(); // input
|
||||
writer.writeStartElement("span");
|
||||
writer.writeAttribute("class", "slider round");
|
||||
writer.writeCharacters("");
|
||||
writer.writeEndElement(); // span
|
||||
writer.writeEndElement(); // label
|
||||
writer.writeAttribute("class", "debug-category");
|
||||
writer.writeTextElement("p", loggingCategory);
|
||||
writer.writeStartElement("label");
|
||||
writer.writeStartElement("select");
|
||||
writer.writeAttribute("class", "debug-select");
|
||||
writer.writeAttribute("onchange", QString("toggleLoggingCategory('%1', this)").arg(loggingCategory));
|
||||
writer.writeAttribute("id", QString("debug-category-%1").arg(loggingCategory));
|
||||
foreach (const QString &option, QStringList({"debug", "info", "warning", "critical"})) {
|
||||
writer.writeStartElement("option");
|
||||
writer.writeAttribute("value", option);
|
||||
writer.writeCharacters(categoryMap.value(option));
|
||||
writer.writeEndElement();
|
||||
}
|
||||
writer.writeEndElement(); // select
|
||||
writer.writeEndElement(); // label
|
||||
writer.writeEndElement(); // div debug-category
|
||||
}
|
||||
|
||||
|
|
@ -1842,16 +1885,17 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
|||
writer.writeAttribute("class", "debug-category");
|
||||
writer.writeTextElement("p", loggingCategory);
|
||||
writer.writeStartElement("label");
|
||||
writer.writeAttribute("class", "switch");
|
||||
writer.writeStartElement("input");
|
||||
writer.writeAttribute("id", QString("debug-category-%1").arg(loggingCategory));
|
||||
writer.writeAttribute("type", "checkbox");
|
||||
writer.writeAttribute("onclick", QString("toggleLoggingCategory('%1')").arg(loggingCategory));
|
||||
writer.writeEndElement(); // input
|
||||
writer.writeStartElement("span");
|
||||
writer.writeAttribute("class", "slider round");
|
||||
writer.writeCharacters("");
|
||||
writer.writeEndElement(); // span
|
||||
writer.writeStartElement("select");
|
||||
writer.writeAttribute("class", "debug-select");
|
||||
writer.writeAttribute("onchange", QString("toggleLoggingCategory('%1', this)").arg(loggingCategory));
|
||||
writer.writeAttribute("id", QString("debug-category-%1").arg(loggingCategory));
|
||||
foreach (const QString &option, QStringList({"debug", "info", "warning", "critical"})) {
|
||||
writer.writeStartElement("option");
|
||||
writer.writeAttribute("value", option);
|
||||
writer.writeCharacters(categoryMap.value(option));
|
||||
writer.writeEndElement();
|
||||
}
|
||||
writer.writeEndElement(); // select
|
||||
writer.writeEndElement(); // label
|
||||
writer.writeEndElement(); // div debug-category
|
||||
}
|
||||
|
|
@ -1867,7 +1911,7 @@ QByteArray DebugServerHandler::createDebugXmlDocument()
|
|||
writer.writeAttribute("class", "footer");
|
||||
writer.writeTextElement("p", QString("Copyright %1 %2 nymea GmbH.").arg(QChar(0xA9)).arg(COPYRIGHT_YEAR_STRING));
|
||||
//: The footer license note of the debug interface
|
||||
writer.writeTextElement("p", tr("Released under the GNU GENERAL PUBLIC LICENSE Version 2."));
|
||||
writer.writeTextElement("p", tr("Released under the GNU GENERAL PUBLIC LICENSE Version 3."));
|
||||
writer.writeEndElement(); // div footer
|
||||
|
||||
writer.writeEndElement(); // div container
|
||||
|
|
|
|||
Loading…
Reference in New Issue