Support logger path setting 77/248277/2
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 25 Nov 2020 03:44:03 +0000 (12:44 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 25 Nov 2020 04:44:13 +0000 (13:44 +0900)
Currently, the logger path is hard coded. After this patch is applied,
the platform developer can change the logger path using the configuration file.

Change-Id: Icd510c6bcdfee40e4ca1e15f938b202a92aac75e
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
src/launchpad-process-pool/conf/launchpad.conf.in
src/launchpad-process-pool/inc/launchpad_config.h
src/launchpad-process-pool/src/launchpad_config.c
src/launchpad-process-pool/src/launchpad_log.c
src/launchpad-process-pool/src/launchpad_logger.c

index 6e7e6b2212106e151a09aaa9ebca7c9fbbf3427c..44acf40b398ba1ab25208aa73d76abfe0a69e75b 100644 (file)
@@ -10,3 +10,6 @@ Interval=5000
 
 [CpuChecker]
 MaxCount=10
+
+[Logger]
+Path=/run/aul/log
index 328f839ce946f094d467e210b1908c57453a55f6..d38cae31a6aa740baf58bc2b91bfc3b77d69ae96 100644 (file)
@@ -25,6 +25,7 @@ typedef enum {
        CONFIG_TYPE_MEMORY_MONITOR_THRESHOLD,
        CONFIG_TYPE_MEMORY_MONITOR_INTERVAL,
        CONFIG_TYPE_CPU_CHECKER_MAX_COUNT,
+       CONFIG_TYPE_LOGGER_PATH,
 } config_type_e;
 
 const char *_config_get_string_value(config_type_e type);
index 0838dd7c4bd8288588d84407ab02fd31b677ac95..f43bc1a0e94e1913cb8c62ea7470538693116f2e 100644 (file)
@@ -43,6 +43,9 @@
 #define TAG_CPU_CHECKER                 "CpuChecker"
 #define KEY_CPU_CHECKER_MAX_COUNT       "MaxCount"
 
+#define TAG_LOGGER                      "Logger"
+#define KEY_LOGGER_PATH                 "Path"
+
 struct memory_status_s {
        char *low_key;
        int low_value;
@@ -59,9 +62,14 @@ struct cpu_checker_s {
        int max_count;
 };
 
+struct logger_s {
+       char *path;
+};
+
 static struct memory_status_s __memory_status;
 static struct memory_monitor_s __memory_monitor;
 static struct cpu_checker_s __cpu_checker;
+static struct logger_s __logger;
 
 const char *_config_get_string_value(config_type_e type)
 {
@@ -74,6 +82,9 @@ const char *_config_get_string_value(config_type_e type)
        case CONFIG_TYPE_MEMORY_STATUS_NORMAL_KEY:
                value = __memory_status.normal_key;
                break;
+       case CONFIG_TYPE_LOGGER_PATH:
+               value = __logger.path;
+               break;
        default:
                _E("Unknown type");
                value = NULL;
@@ -241,6 +252,29 @@ static void __cpu_checker_set(dictionary *d)
        _W("CPU Checker MaxCount(%d)", __cpu_checker.max_count);
 }
 
+static void __logger_init(void)
+{
+       __logger.path = strdup("/var/log/appfw");
+}
+
+static void __logger_fini(void)
+{
+       free(__logger.path);
+}
+
+static void __logger_set(dictionary *d)
+{
+       const char *str;
+
+       str = __get_string_value(d, TAG_LOGGER,
+                       KEY_LOGGER_PATH);
+       if (str) {
+               free(__logger.path);
+               __logger.path = strdup(str);
+       }
+       _W("Logger path(%s)", __logger.path);
+}
+
 int _config_init(void)
 {
        dictionary *d;
@@ -251,6 +285,7 @@ int _config_init(void)
        __memory_status_init();
        __memory_monitor_init();
        __cpu_checker_init();
+       __logger_init();
 
        ret = access(PATH_LAUNCHPAD_CONF, F_OK);
        if (ret != 0) {
@@ -267,6 +302,7 @@ int _config_init(void)
        __memory_status_set(d);
        __memory_monitor_set(d);
        __cpu_checker_set(d);
+       __logger_set(d);
 
        iniparser_freedict(d);
 
@@ -277,6 +313,7 @@ void _config_fini(void)
 {
        _D("config fini");
 
+       __logger_fini();
        __cpu_checker_fini();
        __memory_monitor_fini();
        __memory_status_fini();
index a8d00a39a9d7376e539cf57eb680abaaab8c6e08..6c28d015cd1035d6eef06ba64685b979f8c99d21 100644 (file)
 #define _GNU_SOURCE
 #include <stdarg.h>
 #include <stdio.h>
+#include <linux/limits.h>
 
+#include "launchpad_config.h"
 #include "launchpad_log.h"
 #include "launchpad_logger.h"
 #include "log_private.h"
 
+#define LOG_FILE "launchpad.log"
 #define PATH_LAUNCHPAD_LOG "/var/log/appfw/launchpad/launchpad.log"
 
 static logger_h __logger;
@@ -43,11 +46,13 @@ int _log_print(const char *tag, const char *format, ...)
 
 int _log_init(void)
 {
+       char path[PATH_MAX];
        int ret;
 
        _W("LOG_INIT");
-
-       ret = _logger_create(PATH_LAUNCHPAD_LOG, &__logger);
+       snprintf(path, sizeof(path), "%s/launchpad/launchpad.log",
+                       _config_get_string_value(CONFIG_TYPE_LOGGER_PATH));
+       ret = _logger_create(path, &__logger);
        if (ret != 0) {
                _E("Failed to create log file. error(%d)", ret);
                return ret;
index 0a32b7e63980834661c0025fe56c173bac0a6ef3..529b00c157cfd3a1db1c2ffbdddc6f954527ed2f 100644 (file)
@@ -27,7 +27,9 @@
 #include <sys/types.h>
 #include <time.h>
 #include <unistd.h>
+#include <linux/limits.h>
 
+#include "launchpad_config.h"
 #include "launchpad_logger.h"
 #include "log_private.h"
 
@@ -78,21 +80,25 @@ static int __create_directory(const char *path)
 
 static int __create_launchpad_directories(void)
 {
+       const char *logger_path;
+       char path[PATH_MAX];
        int ret;
 
-       ret = __create_directory(LAUNCHPAD_LOG_APPFW_PATH);
+       logger_path = _config_get_string_value(CONFIG_TYPE_LOGGER_PATH);
+       ret = __create_directory(logger_path);
        if (ret < 0)
                return ret;
 
-       ret = __set_smack_label(LAUNCHPAD_LOG_APPFW_PATH, "_");
+       ret = __set_smack_label(logger_path, "User::Home");
        if (ret < 0)
                return ret;
 
-       ret = __create_directory(LAUNCHPAD_LOG_PATH);
+       snprintf(path, sizeof(path), "%s/launchpad", logger_path);
+       ret = __create_directory(path);
        if (ret < 0)
                return ret;
 
-       ret = __set_smack_label(LAUNCHPAD_LOG_PATH, "User");
+       ret = __set_smack_label(path, "User");
        if (ret < 0)
                return ret;