mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 09:13:01 +02:00
Add --log-level command line option to filter out log messages from lower log levels. Then fix the annoying CzechLight warning message and useless "NACM config validation" log. Then add audit trail as we have in netopeer2-server, and finish off by stripping redundant fields from log message: timestamp, identity, and log level. Fixes #892 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
89 lines
3.5 KiB
Diff
89 lines
3.5 KiB
Diff
From c617503c76dcfe75e73c5f1af3dd6c17c2ca3fd4 Mon Sep 17 00:00:00 2001
|
|
From: Joachim Wiberg <troglobit@gmail.com>
|
|
Date: Sun, 28 Sep 2025 06:04:12 +0200
|
|
Subject: [PATCH 39/42] Add '--log-level LEVEL' command line option
|
|
Organization: Wires
|
|
|
|
The default 'trace' log level is quite verbose for production systems.
|
|
This commit changes the default to 'info' and adds a command line option
|
|
to control the log level.
|
|
|
|
Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
|
|
---
|
|
src/restconf/main.cpp | 30 ++++++++++++++++++++++++++++--
|
|
1 file changed, 28 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/restconf/main.cpp b/src/restconf/main.cpp
|
|
index b1e2bc6..66c782d 100644
|
|
--- a/src/restconf/main.cpp
|
|
+++ b/src/restconf/main.cpp
|
|
@@ -19,6 +19,7 @@
|
|
#include <spdlog/sinks/ansicolor_sink.h>
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
+#include <iostream>
|
|
#include <docopt.h>
|
|
#include <spdlog/spdlog.h>
|
|
#include <sysrepo-cpp/Session.hpp>
|
|
@@ -27,11 +28,12 @@
|
|
static const char usage[] =
|
|
R"(Rousette - RESTCONF server
|
|
Usage:
|
|
- rousette [--syslog] [--timeout <SECONDS>] [--help]
|
|
+ rousette [--syslog] [--timeout <SECONDS>] [--log-level <LEVEL>] [--help]
|
|
Options:
|
|
-h --help Show this screen.
|
|
-t --timeout <SECONDS> Change default timeout in sysrepo (if not set, use sysrepo internal).
|
|
--syslog Log to syslog.
|
|
+ --log-level <LEVEL> Set log level (trace, debug, info, warn, error, critical, off) [default: info].
|
|
)";
|
|
#ifdef HAVE_SYSTEMD
|
|
|
|
@@ -76,10 +78,34 @@ int main(int argc, char* argv [])
|
|
{
|
|
auto args = docopt::docopt(usage, {argv + 1, argv + argc}, true,""/* version */, true);
|
|
auto timeout = std::chrono::milliseconds{0};
|
|
+ auto logLevel = spdlog::level::info;
|
|
|
|
if (args["--timeout"]) {
|
|
timeout = std::chrono::milliseconds{args["--timeout"].asLong() * 1000};
|
|
}
|
|
+
|
|
+ if (args["--log-level"]) {
|
|
+ auto levelStr = args["--log-level"].asString();
|
|
+ if (levelStr == "trace") {
|
|
+ logLevel = spdlog::level::trace;
|
|
+ } else if (levelStr == "debug") {
|
|
+ logLevel = spdlog::level::debug;
|
|
+ } else if (levelStr == "info") {
|
|
+ logLevel = spdlog::level::info;
|
|
+ } else if (levelStr == "warn" || levelStr == "warning") {
|
|
+ logLevel = spdlog::level::warn;
|
|
+ } else if (levelStr == "error" || levelStr == "err") {
|
|
+ logLevel = spdlog::level::err;
|
|
+ } else if (levelStr == "critical") {
|
|
+ logLevel = spdlog::level::critical;
|
|
+ } else if (levelStr == "off") {
|
|
+ logLevel = spdlog::level::off;
|
|
+ } else {
|
|
+ std::cerr << "Invalid log level: " << levelStr << std::endl;
|
|
+ std::cerr << "Valid levels: trace, debug, info, warn, error, critical, off" << std::endl;
|
|
+ return 1;
|
|
+ }
|
|
+ }
|
|
if (args["--syslog"].asBool()) {
|
|
auto syslog_sink = std::make_shared<spdlog::sinks::syslog_sink_mt>("rousette", LOG_PID, LOG_USER, true);
|
|
auto logger = std::make_shared<spdlog::logger>("rousette", syslog_sink);
|
|
@@ -95,7 +121,7 @@ int main(int argc, char* argv [])
|
|
auto logger = std::make_shared<spdlog::logger>("rousette", stdout_sink);
|
|
spdlog::set_default_logger(logger);
|
|
}
|
|
- spdlog::set_level(spdlog::level::trace);
|
|
+ spdlog::set_level(logLevel);
|
|
|
|
/* We will parse URIs using boost::spirit's alnum/alpha/... matchers which are locale-dependent.
|
|
* Let's use something stable no matter what the system is using
|
|
--
|
|
2.43.0
|
|
|