summaryrefslogtreecommitdiff
path: root/gnuradio-runtime/python
diff options
context:
space:
mode:
authorMarcus Müller <mmueller@gnuradio.org>2021-08-03 13:05:37 +0200
committermormj <34754695+mormj@users.noreply.github.com>2021-11-19 14:00:08 -0500
commit1bb08e8004aa8ba6637db3f06abdc283ea56c18a (patch)
tree39140de01d77dee6999f85e90d9fa9dc7cf8471f /gnuradio-runtime/python
parentcb60862fd493a0141946ff9dddc5a98c9c67690b (diff)
logging core: replace log4cpp by spdlog
also: enable formerly disabled qa_logger tests This replaces log4cpp with spdlog. Signed-off-by: Marcus Müller <mmueller@gnuradio.org>
Diffstat (limited to 'gnuradio-runtime/python')
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/__init__.py13
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/bindings/docstrings/logger_pydoc_template.h128
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/bindings/logger_python.cc234
-rw-r--r--gnuradio-runtime/python/gnuradio/gr/bindings/thrift_application_base_python.cc2
4 files changed, 118 insertions, 259 deletions
diff --git a/gnuradio-runtime/python/gnuradio/gr/__init__.py b/gnuradio-runtime/python/gnuradio/gr/__init__.py
index 5103bf97a7..0715a641ea 100644
--- a/gnuradio-runtime/python/gnuradio/gr/__init__.py
+++ b/gnuradio-runtime/python/gnuradio/gr/__init__.py
@@ -1,5 +1,6 @@
#
# Copyright 2003-2012, 2018 Free Software Foundation, Inc.
+# Copyright 2021 Marcus Müller
#
# This file is part of GNU Radio
#
@@ -39,19 +40,7 @@ from .gateway import basic_block, sync_block, decim_block, interp_block, py_io_s
log = gr.logger("log")
log.set_level(prefs().get_string("LOG", "log_level", "notset"))
-log_file = gr.prefs().get_string("LOG", "log_file", "");
-if(log_file == "stderr" or log_file == "stdout"):
- log.add_console_appender(log_file, "gr::log %d :%p: %m%n")
-else:
- log.add_file_appender(log_file, True, "%r :%p: %c{1} - %m%n")
-
log_debug = gr.logger("log_debug")
-log_debug.set_level(prefs().get_string("LOG", "debug_level", "notset"))
-log_debug_file = gr.prefs().get_string("LOG", "debug_file", "");
-if(log_debug_file == "stderr" or log_file == "stdout"):
- log_debug.add_console_appender(log_debug_file, "gr::log %d :%p: %m%n")
-else:
- log_debug.add_file_appender(log_debug_file, True, "%r :%p: %c{1} - %m%n")
io_signaturev = io_signature.makev
io_signature3 = io_signature.make3
diff --git a/gnuradio-runtime/python/gnuradio/gr/bindings/docstrings/logger_pydoc_template.h b/gnuradio-runtime/python/gnuradio/gr/bindings/docstrings/logger_pydoc_template.h
index 84d2e5e9cf..a52071098f 100644
--- a/gnuradio-runtime/python/gnuradio/gr/bindings/docstrings/logger_pydoc_template.h
+++ b/gnuradio-runtime/python/gnuradio/gr/bindings/docstrings/logger_pydoc_template.h
@@ -16,132 +16,26 @@
static const char* __doc_gr_logger = R"doc()doc";
-
-
-static const char* __doc_gr_logger_logger_0 = R"doc()doc";
-
-
-static const char* __doc_gr_logger_logger_1 = R"doc()doc";
-
-
+static const char* __doc_gr_logger_logger = R"doc()doc";
static const char* __doc_gr_logger_set_level = R"doc()doc";
-
-
static const char* __doc_gr_logger_get_level = R"doc()doc";
-
-
+static const char* __doc_gr_logger_get_string_level = R"doc()doc";
+static const char* __doc_gr_logger_trace = R"doc()doc";
static const char* __doc_gr_logger_debug = R"doc()doc";
-
-
static const char* __doc_gr_logger_info = R"doc()doc";
-
-
static const char* __doc_gr_logger_notice = R"doc()doc";
-
-
static const char* __doc_gr_logger_warn = R"doc()doc";
-
-
static const char* __doc_gr_logger_error = R"doc()doc";
-
-
static const char* __doc_gr_logger_crit = R"doc()doc";
-
-
static const char* __doc_gr_logger_alert = R"doc()doc";
-
-
static const char* __doc_gr_logger_fatal = R"doc()doc";
-
-
static const char* __doc_gr_logger_emerg = R"doc()doc";
-
-static const char* __doc_gr_logger_errorIF = R"doc()doc";
-
-
-static const char* __doc_gr_logger_log_assert = R"doc()doc";
-
-
-static const char* __doc_gr_logger_add_console_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_set_console_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_add_file_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_set_file_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_add_rollingfile_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_config = R"doc()doc";
-
-
-static const char* __doc_gr_logger_config_get_filename = R"doc()doc";
-
-
-static const char* __doc_gr_logger_config_get_watch_period = R"doc()doc";
-
-
-static const char* __doc_gr_logger_config_load_config = R"doc()doc";
-
-
-static const char* __doc_gr_logger_config_stop_watch = R"doc()doc";
-
-
-static const char* __doc_gr_logger_config_reset_config = R"doc()doc";
-
-
-static const char* __doc_gr_configure_default_loggers = R"doc()doc";
-
-
-static const char* __doc_gr_update_logger_alias = R"doc()doc";
-
-
-static const char* __doc_gr_logger_get_logger = R"doc()doc";
-
-
-static const char* __doc_gr_logger_load_config = R"doc()doc";
-
-
-static const char* __doc_gr_logger_reset_config = R"doc()doc";
-
-
-static const char* __doc_gr_logger_set_level_0 = R"doc()doc";
-
-
-static const char* __doc_gr_logger_set_level_1 = R"doc()doc";
-
-
-static const char* __doc_gr_logger_get_level_0 = R"doc()doc";
-
-
-static const char* __doc_gr_logger_get_level_1 = R"doc()doc";
-
-
-static const char* __doc_gr_logger_add_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_set_appender = R"doc()doc";
-
-
-// static const char *__doc_gr_logger_add_console_appender = R"doc()doc";
-
-
-// static const char *__doc_gr_logger_set_console_appender = R"doc()doc";
-
-
-// static const char *__doc_gr_logger_add_file_appender = R"doc()doc";
-
-
-// static const char *__doc_gr_logger_set_file_appender = R"doc()doc";
-
-
-// static const char *__doc_gr_logger_add_rollingfile_appender = R"doc()doc";
-
-
-static const char* __doc_gr_logger_get_logger_names = R"doc()doc";
+static const char* __doc_gr_logging_singleton = R"doc()doc";
+static const char* __doc_gr_logging_default_level = R"doc()doc";
+static const char* __doc_gr_logging_debug_level = R"doc()doc";
+static const char* __doc_gr_logging_add_default_sink = R"doc()doc";
+static const char* __doc_gr_logging_add_debug_sink = R"doc()doc";
+static const char* __doc_gr_logging_add_default_console_sink = R"doc()doc";
+static const char* __doc_gr_logging_add_debug_console_sink = R"doc()doc";
+static const char* __doc_gr_logging_default_pattern = R"doc()doc";
diff --git a/gnuradio-runtime/python/gnuradio/gr/bindings/logger_python.cc b/gnuradio-runtime/python/gnuradio/gr/bindings/logger_python.cc
index 0245cf53dd..f82cfaaebf 100644
--- a/gnuradio-runtime/python/gnuradio/gr/bindings/logger_python.cc
+++ b/gnuradio-runtime/python/gnuradio/gr/bindings/logger_python.cc
@@ -1,5 +1,6 @@
/*
* Copyright 2020 Free Software Foundation, Inc.
+ * Copyright 2021 Marcus Müller
*
* This file is part of GNU Radio
*
@@ -14,152 +15,127 @@
/* BINDTOOL_GEN_AUTOMATIC(0) */
/* BINDTOOL_USE_PYGCCXML(0) */
/* BINDTOOL_HEADER_FILE(logger.h) */
-/* BINDTOOL_HEADER_FILE_HASH(6a082fd5563025225373d3f117d2134c) */
+/* BINDTOOL_HEADER_FILE_HASH(7f3cbb9463e52829b27c58d9dd41b422) */
/***********************************************************************************/
#include <pybind11/complex.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
+#include <spdlog/common.h>
namespace py = pybind11;
#include <gnuradio/logger.h>
+#include <logger_pydoc.h>
void bind_logger(py::module& m)
{
- using logger = gr::logger;
- using logger_config = gr::logger_config;
+ py::enum_<spdlog::level::level_enum>(m, "level_enum")
+ // Values directly from spdlog/common.h
+ .value("trace", spdlog::level::trace)
+ .value("debug", spdlog::level::debug)
+ .value("info", spdlog::level::info)
+ .value("warn", spdlog::level::warn)
+ .value("err", spdlog::level::err)
+ .value("critical", spdlog::level::critical)
+ .value("off", spdlog::level::off);
+ using logger = gr::logger;
- py::class_<logger, std::shared_ptr<logger>>(m, "logger")
+ py::class_<logger, std::shared_ptr<logger>>(m, "logger", D(logger))
- .def(py::init<std::string>(), py::arg("logger_name"))
+ .def(py::init<std::string>(), py::arg("logger_name"), D(logger, logger))
.def(py::init<gr::logger const&>(), py::arg("arg0"))
- .def("set_level", &logger::set_level, py::arg("level"))
- .def("get_level", &logger::get_level, py::arg("level"))
- .def("debug", &logger::debug, py::arg("msg"))
- .def("info", &logger::info, py::arg("msg"))
- .def("notice", &logger::notice, py::arg("msg"))
- .def("warn", &logger::warn, py::arg("msg"))
- .def("error", &logger::error, py::arg("msg"))
- .def("crit", &logger::crit, py::arg("msg"))
- .def("alert", &logger::alert, py::arg("msg"))
- .def("fatal", &logger::fatal, py::arg("msg"))
- .def("emerg", &logger::emerg, py::arg("msg"))
- .def("errorIF", &logger::errorIF, py::arg("cond"), py::arg("msg"))
- .def("log_assert", &logger::log_assert, py::arg("cond"), py::arg("msg"))
- .def("add_console_appender",
- &logger::add_console_appender,
- py::arg("target"),
- py::arg("pattern"))
- .def("set_console_appender",
- &logger::set_console_appender,
- py::arg("target"),
- py::arg("pattern"))
- .def("add_file_appender",
- &logger::add_file_appender,
- py::arg("filename"),
- py::arg("append"),
- py::arg("pattern"))
- .def("set_file_appender",
- &logger::set_file_appender,
- py::arg("filename"),
- py::arg("append"),
- py::arg("pattern"))
- .def("add_rollingfile_appender",
- &logger::add_rollingfile_appender,
- py::arg("filename"),
- py::arg("filesize"),
- py::arg("bkup_index"),
- py::arg("append"),
- py::arg("mode"),
- py::arg("pattern"));
-
-
- py::class_<logger_config, std::shared_ptr<logger_config>>(m, "logger_config")
-
-
- .def_static("get_filename", &logger_config::get_filename)
- .def_static("get_watch_period", &logger_config::get_watch_period)
- .def_static("load_config",
- &logger_config::load_config,
- py::arg("filename"),
- py::arg("watch_period") = 0)
- .def_static("stop_watch", &logger_config::stop_watch)
- .def_static("reset_config", &logger_config::reset_config);
+ .def("set_level",
+ py::overload_cast<const std::string&>(&logger::set_level),
+ py::arg("level"),
+ D(logger, set_level))
+ .def("set_level",
+ py::overload_cast<const gr::log_level>(&logger::set_level),
+ py::arg("level"),
+ D(logger, set_level))
+ .def("get_level",
+ py::overload_cast<std::string&>(&logger::get_level, py::const_),
+ py::arg("level"),
+ D(logger, get_level))
+ .def("get_string_level", &logger::get_string_level, D(logger, get_string_level))
+ .def(
+ "trace",
+ [](logger& log, const std::string& msg) { log.trace(msg); },
+ py::arg("msg"),
+ D(logger, trace))
+ .def(
+ "debug",
+ [](logger& log, const std::string& msg) { log.debug(msg); },
+ py::arg("msg"),
+ D(logger, debug))
+ .def(
+ "info",
+ [](logger& log, const std::string& msg) { log.info(msg); },
+ py::arg("msg"),
+ D(logger, info))
+ .def(
+ "notice",
+ [](logger& log, const std::string& msg) { log.notice(msg); },
+ py::arg("msg"),
+ D(logger, notice))
+ .def(
+ "warn",
+ [](logger& log, const std::string& msg) { log.warn(msg); },
+ py::arg("msg"),
+ D(logger, warn))
+ .def(
+ "error",
+ [](logger& log, const std::string& msg) { log.error(msg); },
+ py::arg("msg"),
+ D(logger, error))
+ .def(
+ "crit",
+ [](logger& log, const std::string& msg) { log.crit(msg); },
+ py::arg("msg"),
+ D(logger, crit))
+ .def(
+ "alert",
+ [](logger& log, const std::string& msg) { log.alert(msg); },
+ py::arg("msg"),
+ D(logger, alert))
+ .def(
+ "fatal",
+ [](logger& log, const std::string& msg) { log.fatal(msg); },
+ py::arg("msg"),
+ D(logger, fatal))
+ .def(
+ "emerg",
+ [](logger& log, const std::string& msg) { log.emerg(msg); },
+ py::arg("msg"),
+ D(logger, emerg));
+ using logging = gr::logging;
- // m.def("configure_default_loggers",&gr::configure_default_loggers,
- // py::arg("l"),
- // py::arg("d"),
- // py::arg("name")
- // );
- m.def("update_logger_alias",
- &gr::update_logger_alias,
- py::arg("name"),
- py::arg("alias"));
- m.def("logger_get_logger", &gr::logger_get_logger, py::arg("name"));
- m.def("logger_get_configured_logger",
- &gr::logger_get_configured_logger,
- py::arg("name"));
- m.def("logger_load_config", &gr::logger_load_config, py::arg("config_filename") = "");
- m.def("gr_logger_reset_config", &gr_logger_reset_config);
- m.def("logger_set_level",
- (void (*)(gr::logger_ptr, std::string const&)) & gr::logger_set_level,
- py::arg("logger"),
- py::arg("level"));
- m.def("logger_set_level",
- (void (*)(gr::logger_ptr, log4cpp::Priority::Value)) & gr::logger_set_level,
- py::arg("logger"),
- py::arg("level"));
- m.def("logger_get_level",
- (void (*)(gr::logger_ptr, std::string&)) & gr::logger_get_level,
- py::arg("logger"),
- py::arg("level"));
- // m.def("logger_get_level",(void (*)(gr::logger_ptr, log4cpp::Priority::Value
- // &))&gr::logger_get_level,
- // py::arg("logger"),
- // py::arg("level")
- // );
- // m.def("logger_add_appender",&gr::logger_add_appender,
- // py::arg("logger"),
- // py::arg("appender")
- // ); // Not Implemented
- // m.def("logger_set_appender",&gr::logger_set_appender,
- // py::arg("logger"),
- // py::arg("appender")
- // ); // Not Implemented
- m.def("logger_add_console_appender",
- &gr::logger_add_console_appender,
- py::arg("logger"),
- py::arg("target"),
- py::arg("pattern"));
- m.def("logger_set_console_appender",
- &gr::logger_set_console_appender,
- py::arg("logger"),
- py::arg("target"),
- py::arg("pattern"));
- m.def("logger_add_file_appender",
- &gr::logger_add_file_appender,
- py::arg("logger"),
- py::arg("filename"),
- py::arg("append"),
- py::arg("pattern"));
- m.def("logger_set_file_appender",
- &gr::logger_set_file_appender,
- py::arg("logger"),
- py::arg("filename"),
- py::arg("append"),
- py::arg("pattern"));
- m.def("logger_add_rollingfile_appender",
- &gr::logger_add_rollingfile_appender,
- py::arg("logger"),
- py::arg("filename"),
- py::arg("filesize"),
- py::arg("bkup_index"),
- py::arg("append"),
- py::arg("mode"),
- py::arg("pattern"));
- m.def("logger_get_logger_names", &gr::logger_get_logger_names);
+ py::class_<logging, std::unique_ptr<logging, py::nodelete>>(m, "logging")
+ .def(py::init([]() {
+ return std::unique_ptr<logging, py::nodelete>(&logging::singleton());
+ }),
+ D(logging, singleton))
+ .def("default_level", &logging::default_level, D(logging, default_level))
+ .def("debug_level", &logging::debug_level, D(logging, debug_level))
+ .def("add_default_sink",
+ &logging::add_default_sink,
+ py::arg("sink"),
+ D(logging, add_default_sink))
+ .def("add_debug_sink",
+ &logging::add_debug_sink,
+ py::arg("sink"),
+ D(logging, add_debug_sink))
+ .def("add_default_console_sink",
+ &logging::add_default_console_sink,
+ D(logging, add_default_console_sink))
+ .def("add_debug_console_sink",
+ &logging::add_debug_console_sink,
+ D(logging, add_debug_console_sink))
+ .def_property_readonly_static(
+ "default_pattern",
+ [](py::object) { return logging::default_pattern; },
+ D(logging, default_pattern));
}
diff --git a/gnuradio-runtime/python/gnuradio/gr/bindings/thrift_application_base_python.cc b/gnuradio-runtime/python/gnuradio/gr/bindings/thrift_application_base_python.cc
index 58042b8f61..b1ba2d2246 100644
--- a/gnuradio-runtime/python/gnuradio/gr/bindings/thrift_application_base_python.cc
+++ b/gnuradio-runtime/python/gnuradio/gr/bindings/thrift_application_base_python.cc
@@ -14,7 +14,7 @@
/* BINDTOOL_GEN_AUTOMATIC(0) */
/* BINDTOOL_USE_PYGCCXML(0) */
/* BINDTOOL_HEADER_FILE(thrift_application_base.h) */
-/* BINDTOOL_HEADER_FILE_HASH(194037fee916fc62be225080aa9229fc) */
+/* BINDTOOL_HEADER_FILE_HASH(6d4665cd29822e3b0f6248bf71aad6f8) */
/***********************************************************************************/
#include <pybind11/complex.h>