You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ph...@apache.org on 2019/08/13 12:38:59 UTC
[nifi-minifi-cpp] branch master updated: MINIFICPP-1000 - Add
proper logging for configuration loading
This is an automated email from the ASF dual-hosted git repository.
phrocker pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git
The following commit(s) were added to refs/heads/master by this push:
new fb92490 MINIFICPP-1000 - Add proper logging for configuration loading
fb92490 is described below
commit fb9249086d4a9512ccbb129b493d8acd6f93580a
Author: Arpad Boda <ab...@apache.org>
AuthorDate: Thu Aug 8 15:18:32 2019 -0400
MINIFICPP-1000 - Add proper logging for configuration loading
This closes #623.
Signed-off-by: Marc Parisi <ph...@apache.org>
---
.../include/core/logging/LoggerConfiguration.h | 1 +
libminifi/include/properties/Configure.h | 1 +
libminifi/include/properties/Properties.h | 10 ++++-
libminifi/src/Properties.cpp | 45 ++++++++++------------
main/MiNiFiMain.cpp | 2 +-
5 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/libminifi/include/core/logging/LoggerConfiguration.h b/libminifi/include/core/logging/LoggerConfiguration.h
index d015862..7f9fdd2 100644
--- a/libminifi/include/core/logging/LoggerConfiguration.h
+++ b/libminifi/include/core/logging/LoggerConfiguration.h
@@ -57,6 +57,7 @@ struct LoggerNamespace {
class LoggerProperties : public Properties {
public:
+ LoggerProperties() : Properties("Logger properties") {}
/**
* Gets all keys that start with the given prefix and do not have a "." after the prefix and "." separator.
*
diff --git a/libminifi/include/properties/Configure.h b/libminifi/include/properties/Configure.h
index 9fc639f..f4a3a4e 100644
--- a/libminifi/include/properties/Configure.h
+++ b/libminifi/include/properties/Configure.h
@@ -30,6 +30,7 @@ namespace minifi {
class Configure : public Properties {
public:
+ Configure() : Properties("MiNiFi configuration") {}
void setAgentIdentifier(const std::string &identifier) {
std::lock_guard<std::mutex> lock(mutex_);
diff --git a/libminifi/include/properties/Properties.h b/libminifi/include/properties/Properties.h
index 9047d11..420f26c 100644
--- a/libminifi/include/properties/Properties.h
+++ b/libminifi/include/properties/Properties.h
@@ -45,12 +45,16 @@ namespace minifi {
class Properties {
public:
- Properties();
+ Properties(const std::string& name = "");
virtual ~Properties() {
}
+ virtual const std::string& getName() {
+ return name_;
+ }
+
// Clear the load config
void clear() {
std::lock_guard<std::mutex> lock(mutex_);
@@ -110,7 +114,7 @@ class Properties {
}
// Get the determined MINIFI_HOME
- std::string getHome() {
+ std::string getHome() const {
return minifi_home_;
}
// Parse Command Line
@@ -137,6 +141,8 @@ class Properties {
std::shared_ptr<minifi::core::logging::Logger> logger_;
// Home location for this executable
std::string minifi_home_;
+
+ std::string name_;
};
} /* namespace minifi */
diff --git a/libminifi/src/Properties.cpp b/libminifi/src/Properties.cpp
index 0e23b45..95cb18e 100644
--- a/libminifi/src/Properties.cpp
+++ b/libminifi/src/Properties.cpp
@@ -22,14 +22,6 @@
#include "core/Core.h"
#include "core/logging/LoggerConfiguration.h"
-#ifndef FILE_SEPARATOR_C
-#ifdef WIN32
-#define FILE_SEPARATOR_C '\\'
-#else
-#define FILE_SEPARATOR_C '/'
-#endif
-#endif
-
namespace org {
namespace apache {
namespace nifi {
@@ -37,8 +29,9 @@ namespace minifi {
#define TRACE_BUFFER_SIZE 512
-Properties::Properties()
- : logger_(logging::LoggerFactory<Properties>::getLogger()) {
+Properties::Properties(const std::string& name)
+ : logger_(logging::LoggerFactory<Properties>::getLogger()),
+ name_(name) {
}
// Get the config value
@@ -122,26 +115,27 @@ bool Properties::parseConfigureFileLine(char *buf, std::string &prop_key, std::s
// Load Configure File
void Properties::loadConfigureFile(const char *fileName) {
- std::string adjustedFilename;
- if (fileName) {
- // perform a naive determination if this is a relative path
- if (fileName[0] != FILE_SEPARATOR_C) {
- adjustedFilename = adjustedFilename + getHome() + FILE_SEPARATOR_C + fileName;
- } else {
- if (adjustedFilename.empty()) {
- adjustedFilename = getHome();
- }
- adjustedFilename += fileName;
- }
+ if (NULL == fileName) {
+ logger_->log_error("Configuration file path for %s is a nullptr!", getName().c_str());
+ return;
+ }
+
+ std::string adjustedFilename = getHome();
+ // perform a naive determination if this is a relative path
+ if (fileName[0] != utils::file::FileUtils::get_separator()) {
+ adjustedFilename += utils::file::FileUtils::get_separator();
}
- char *path = NULL;
+
+ adjustedFilename += fileName;
+
+ const char *path = NULL;
#ifndef WIN32
char full_path[PATH_MAX];
path = realpath(adjustedFilename.c_str(), full_path);
#else
- path = const_cast<char*>(adjustedFilename.c_str());
+ path = adjustedFilename.c_str();
#endif
- logger_->log_info("Using configuration file located at %s, from %s", path, fileName);
+ logger_->log_info("Using configuration file to load configuration for %s from %s (located at %s)", getName().c_str(), fileName, path);
properties_file_ = path;
@@ -165,7 +159,7 @@ void Properties::loadConfigureFile(const char *fileName) {
bool Properties::validateConfigurationFile(const std::string &configFile) {
std::ifstream file(configFile, std::ifstream::in);
if (!file.good()) {
- logger_->log_error("load configure file failed %s", configFile);
+ logger_->log_error("Failed to load configuration file %s to configure %s", configFile, getName().c_str());
return false;
}
@@ -173,6 +167,7 @@ bool Properties::validateConfigurationFile(const std::string &configFile) {
for (file.getline(buf, TRACE_BUFFER_SIZE); file.good(); file.getline(buf, TRACE_BUFFER_SIZE)) {
std::string key, value;
if (!parseConfigureFileLine(buf, key, value)) {
+ logger_->log_error("While loading configuration for %s found invalid line: %s", getName().c_str(), buf);
return false;
}
}
diff --git a/main/MiNiFiMain.cpp b/main/MiNiFiMain.cpp
index ba74ace..6c39b5e 100644
--- a/main/MiNiFiMain.cpp
+++ b/main/MiNiFiMain.cpp
@@ -191,7 +191,7 @@ int main(int argc, char **argv) {
log_properties->loadConfigureFile(DEFAULT_LOG_PROPERTIES_FILE);
logging::LoggerConfiguration::getConfiguration().initialize(log_properties);
- std::shared_ptr<minifi::Properties> uid_properties = std::make_shared<minifi::Properties>();
+ std::shared_ptr<minifi::Properties> uid_properties = std::make_shared<minifi::Properties>("UID properties");
uid_properties->setHome(minifiHome);
uid_properties->loadConfigureFile(DEFAULT_UID_PROPERTIES_FILE);
utils::IdGenerator::getIdGenerator()->initialize(uid_properties);