From 4a738a7a2b4d73e604dbe574d43396ecf36bee5a Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Thu, 29 Jul 2021 22:25:03 +0200 Subject: [PATCH] EHN: logging and error handling --- include/caosdb/log_level.h | 5 ++++- src/caosdb/logging.cpp | 6 +++++ src/ccaosdb.cpp | 2 +- src/ccaosdbcli.c | 26 +++++++++++++-------- src/cxxcaosdbcli.cpp | 46 +++++++++++++++++++++----------------- 5 files changed, 54 insertions(+), 31 deletions(-) diff --git a/include/caosdb/log_level.h b/include/caosdb/log_level.h index 4cbfeb3..af05d3b 100644 --- a/include/caosdb/log_level.h +++ b/include/caosdb/log_level.h @@ -30,6 +30,9 @@ #define CAOSDB_LOG_LEVEL_DEBUG 300 #define CAOSDB_LOG_LEVEL_TRACE 200 #define CAOSDB_LOG_LEVEL_ALL 0 -#define CAOSDB_DEFAULT_LOG_LEVEL 500 + +#ifndef CAOSDB_DEFAULT_LOG_LEVEL +#define CAOSDB_DEFAULT_LOG_LEVEL CAOSDB_LOG_LEVEL_ERROR +#endif #endif diff --git a/src/caosdb/logging.cpp b/src/caosdb/logging.cpp index f0d6be4..486ab84 100644 --- a/src/caosdb/logging.cpp +++ b/src/caosdb/logging.cpp @@ -120,6 +120,12 @@ SyslogSinkConfiguration::SyslogSinkConfiguration(const std::string &name, } auto initialize_logging_defaults() -> int { + // first: turn everything off + boost::log::settings off_settings; + off_settings["Core.DisableLogging"] = true; + boost::log::init_from_settings(off_settings); + + // now set everything up const static std::vector<std::shared_ptr<SinkConfiguration>> default_sinks = { std::make_shared<ConsoleSinkConfiguration>("DEFAULT_SINK_1", CAOSDB_DEFAULT_LOG_LEVEL)}; diff --git a/src/ccaosdb.cpp b/src/ccaosdb.cpp index 34da580..d21b3bd 100644 --- a/src/ccaosdb.cpp +++ b/src/ccaosdb.cpp @@ -12,7 +12,7 @@ extern "C" { -#define CCAOSDB_LOGGER_NAME "ccaosd" +#define CCAOSDB_LOGGER_NAME "ccaosdb" /* * Macro for wrapping every function into a try-catch clause. If an exception diff --git a/src/ccaosdbcli.c b/src/ccaosdbcli.c index 90cf6ed..e06dff5 100644 --- a/src/ccaosdbcli.c +++ b/src/ccaosdbcli.c @@ -3,23 +3,31 @@ #include <stdio.h> // for printf int main(void) { + int status = 0; // last function return value printf( "CaosDB C client (libcaosdb %d.%d.%d)\nWe don't miss the H of caos.\n\n", LIBCAOSDB_VERSION_MAJOR, LIBCAOSDB_VERSION_MINOR, LIBCAOSDB_VERSION_PATCH); caosdb_connection_connection connection; - caosdb_connection_connection_manager_get_default_connection(&connection); + status = + caosdb_connection_connection_manager_get_default_connection(&connection); + if (status != 0) { + printf("An error occured: ERROR %d - %s\n", status, + caosdb_get_status_description(status)); + return status; + } caosdb_info_version_info version_info; - int status = caosdb_connection_get_version_info(&version_info, &connection); - if (status == 0) { - printf("Server version: %d.%d.%d-%s-%s\n", version_info.major, - version_info.minor, version_info.patch, version_info.pre_release, - version_info.build); - /*} else {*/ - /*printf("An error occured: ERROR %d - %s\n", status,*/ - /*caosdb_get_status_description(status));*/ + status = caosdb_connection_get_version_info(&version_info, &connection); + if (status != 0) { + printf("An error occured: ERROR %d - %s\n", status, + caosdb_get_status_description(status)); + return status; } + printf("Server version: %d.%d.%d-%s-%s\n", version_info.major, + version_info.minor, version_info.patch, version_info.pre_release, + version_info.build); + return 0; } diff --git a/src/cxxcaosdbcli.cpp b/src/cxxcaosdbcli.cpp index b33026d..f941449 100644 --- a/src/cxxcaosdbcli.cpp +++ b/src/cxxcaosdbcli.cpp @@ -24,6 +24,7 @@ #include "caosdb/connection.h" // for Connection, ConnectionManager #include "caosdb/constants.h" // for LIBCAOSDB_VERSION_MINOR, LIBCAOSDB_V... #include "caosdb/entity.h" // for Entity +#include "caosdb/exceptions.h" // for ConfigurationError #include "caosdb/info.h" // for VersionInfo #include "caosdb/transaction.h" // for Transaction, UniqueResult, ResultSet #include <iostream> // for operator<<, basic_ostream, basic_ost... @@ -39,28 +40,33 @@ auto main() -> int { << "We don't miss the H of caos.\n" << std::endl; - const auto &connection = - caosdb::connection::ConnectionManager::GetDefaultConnection(); + try { + const auto &connection = + caosdb::connection::ConnectionManager::GetDefaultConnection(); - connection->RetrieveVersionInfoNoExceptions(); - // get version info of the server - const auto &v_info = connection->GetVersionInfo(); - std::cout << "Server Version: " << v_info->GetMajor() << "." - << v_info->GetMinor() << "." << v_info->GetPatch() << "-" - << v_info->GetPreRelease() << "-" << v_info->GetBuild() - << std::endl; + connection->RetrieveVersionInfoNoExceptions(); + // get version info of the server + const auto &v_info = connection->GetVersionInfo(); + std::cout << "Server Version: " << v_info->GetMajor() << "." + << v_info->GetMinor() << "." << v_info->GetPatch() << "-" + << v_info->GetPreRelease() << "-" << v_info->GetBuild() + << std::endl; - // retrieve an entity - auto transaction(connection->CreateTransaction()); - transaction->RetrieveById("20"); - transaction->Execute(); - const auto &result_set = - dynamic_cast<const caosdb::transaction::UniqueResult &>( - transaction->GetResultSet()); + // retrieve an entity + auto transaction(connection->CreateTransaction()); + transaction->RetrieveById("20"); + transaction->Execute(); + const auto &result_set = + dynamic_cast<const caosdb::transaction::UniqueResult &>( + transaction->GetResultSet()); - // print description - std::cout << "Entity Description: " << result_set.GetEntity().GetDescription() - << std::endl; + // print description + std::cout << "Entity Description: " + << result_set.GetEntity().GetDescription() << std::endl; - return 0; + return 0; + } catch (const caosdb::exceptions::ConfigurationError &exc) { + std::cout << "ConfigurationError: " << exc.what() << std::endl; + return exc.GetCode(); + } } -- GitLab