This is an automated email from the ASF dual-hosted git repository.

dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new 581444a7d1 [INLONG-9324][SDK] Supports automatic creation of custom 
log directories (#9325)
581444a7d1 is described below

commit 581444a7d1ef2be760a936f3c2c130cb295154bb
Author: doleyzi <43397300+dole...@users.noreply.github.com>
AuthorDate: Thu Nov 23 17:32:28 2023 +0800

    [INLONG-9324][SDK] Supports automatic creation of custom log directories 
(#9325)
---
 .../dataproxy-sdk-cpp/src/utils/logger.h           | 27 +++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git 
a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/utils/logger.h 
b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/utils/logger.h
index 59bcbdc753..a252890181 100644
--- a/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/utils/logger.h
+++ b/inlong-sdk/dataproxy-sdk-twins/dataproxy-sdk-cpp/src/utils/logger.h
@@ -22,21 +22,42 @@
 #define INLONG_SDK_LOGGER_H
 
 #include "sdk_conf.h"
+#include <iostream>
 #include <log4cplus/fileappender.h>
 #include <log4cplus/helpers/loglog.h>
 #include <log4cplus/initializer.h>
 #include <log4cplus/log4cplus.h>
 #include <log4cplus/logger.h>
 #include <log4cplus/loglevel.h>
+#include <sys/stat.h>
 using namespace log4cplus::helpers;
 
 namespace inlong {
+static const char kDefaultPath[] = "./";
+static const char kLogName[] = "/inlong-sdk.log";
+static bool CheckPath(const std::string &path) {
+  struct stat st_stat = {0};
+  int ret = stat(path.c_str(), &st_stat);
+  if (ret && errno != ENOENT) {
+    std::cout << "Check directory error:" << strerror(errno) << std::endl;
+    return false;
+  }
+
+  if ((ret && errno == ENOENT) || (!ret && !S_ISDIR(st_stat.st_mode))) {
+    if (mkdir(path.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)) {
+      std::cout << "Crate directory error:" << strerror(errno) << std::endl;
+      return false;
+    }
+  }
+  return true;
+}
+
 static void initLog4cplus() {
   std::string log_path = SdkConfig::getInstance()->log_path_;
-  if (log_path.back() != '/') {
-    log_path = "./inlong-sdk-logs/";
+  if (!CheckPath(log_path)) {
+    log_path = kDefaultPath;
   }
-  std::string log_name = log_path + "/inlong-sdk.log";
+  std::string log_name = log_path + kLogName;
   log4cplus::SharedAppenderPtr the_append(new log4cplus::RollingFileAppender(
       log_name, SdkConfig::getInstance()->log_size_,
       SdkConfig::getInstance()->log_num_));

Reply via email to