Support logger path setting 74/248274/4
authorHwankyu Jhun <h.jhun@samsung.com>
Wed, 25 Nov 2020 03:12:34 +0000 (12:12 +0900)
committerHwankyu Jhun <h.jhun@samsung.com>
Wed, 25 Nov 2020 04:43:56 +0000 (13:43 +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: I3e78acedf39dabc3c8eb18958cfccc955ae4bac9
Signed-off-by: Hwankyu Jhun <h.jhun@samsung.com>
13 files changed:
packaging/amd.conf
src/lib/amd_config.c
src/lib/amd_config.h
src/lib/amd_logger.c
src/lib/amd_logger.h
src/lib/amd_main.c
src/lib/amd_unix_signal.c
src/lib/amd_util.c
src/lib/api/amd_api_logger.cc
src/lib/api/amd_api_logger.h
src/modules/watch/src/amd_watch_logger.c
src/modules/watchdog/src/amd_watchdog_logger.c
src/modules/widget/src/amd_widget_logger.c

index aa3f8cda4a93e3c524c895bc16be54079a19e7d3..3e7f418ef402e8c1cfc18262fe598263c93c794f 100644 (file)
@@ -4,3 +4,4 @@ fg_timeout=5000
 watchdog_interval=10000
 wathcdog_max_retry=3
 launchpad_max_launch_failure=5
+logger_path=/run/aul/log
index fcc8b2ca13617995e5772536b4e47dd74389f65d..a62367a97fe446d2dd8ff4b7df3fc748852374a3 100644 (file)
 #define CONFIG_SERVICE_APP_ONBOOT_INTERVAL "service_app_onboot_interval"
 #define CONFIG_FG_TIMEOUT "fg_timeout"
 #define CONFIG_LAUNCHPAD_MAX_LAUNCH_FAILURE "launchpad_max_launch_failure"
+#define CONFIG_LOGGER_PATH "logger_path"
 
 typedef struct config_s {
        tizen_profile_t profile;
        unsigned int onboot_interval;
        unsigned int fg_timeout;
        unsigned int max_launch_failure;
+       char *logger_path;
 } config;
 
 static config __config;
@@ -90,6 +92,11 @@ unsigned int _config_get_max_launch_failure(void)
        return __config.max_launch_failure;
 }
 
+const char *_config_get_logger_path(void)
+{
+       return __config.logger_path;
+}
+
 static int __get_config_int(dictionary *d, const char *key)
 {
        char buf[512];
@@ -105,8 +112,24 @@ static int __get_config_int(dictionary *d, const char *key)
        return val;
 }
 
+static const char *__get_config_string(dictionary *d, const char *key)
+{
+       char buf[512];
+       const char *val;
+
+       snprintf(buf, sizeof(buf), "configuration:%s", key);
+       val = iniparser_getstring(d, buf, NULL);
+       if (val == NULL) {
+               _W("Failed to get %s", buf);
+               return NULL;
+       }
+
+       return val;
+}
+
 static int __load_config_file(const char *path)
 {
+       const char *str;
        int r;
        dictionary *d;
 
@@ -138,10 +161,18 @@ static int __load_config_file(const char *path)
        r = __get_config_int(d, CONFIG_LAUNCHPAD_MAX_LAUNCH_FAILURE);
        if (r > 0) {
                __config.max_launch_failure = r;
-               _I("[__CONFIG__] Max launch failure : %u",
+               _I("[__CONFIG__] Max launch failure: %u",
                                __config.max_launch_failure);
        }
 
+       str = __get_config_string(d, CONFIG_LOGGER_PATH);
+       if (str) {
+               free(__config.logger_path);
+               __config.logger_path = strdup(str);
+               _I("[__CONFIG__] Logger path: %s", __config.logger_path);
+       }
+
+
        iniparser_freedict(d);
 
        return 0;
@@ -155,6 +186,7 @@ int _config_init(void)
        __config.onboot_interval = 3000;
        __config.fg_timeout = 5000;
        __config.max_launch_failure = 5;
+       __config.logger_path = strdup("/var/log/appfw");
 
        if (__load_config_file(CONFIG_FILE_PATH) < 0)
                _W("Failed to load config file");
@@ -165,4 +197,5 @@ int _config_init(void)
 void _config_fini(void)
 {
        _D("config fini");
+       free(__config.logger_path);
 }
index 138d4b197fd8626d9cc32e66cfa576755105edfd..ae0d2a70317910a91ccea7909b22c68b08475cc3 100644 (file)
@@ -52,6 +52,8 @@ unsigned int _config_get_fg_timeout(void);
 
 unsigned int _config_get_max_launch_failure(void);
 
+const char *_config_get_logger_path(void);
+
 int _config_init(void);
 
 void _config_fini(void);
index 0786361c0aab3631c9ab278bdfa3aaaf7e93735f..b00c10116d4d9fa3c6b4e520bab1bbd4b18d6cda 100644 (file)
 #include <time.h>
 #include <unistd.h>
 
+#include "amd_config.h"
 #include "amd_logger.h"
 #include "amd_util.h"
 
 #define LOG_MAX_SIZE 2500
-#define LOG_APPFW_PATH "/var/log/appfw"
-#define LOG_PATH "/var/log/appfw/amd"
 
 struct logger_s {
        int fd;
        int index;
 };
 
+static char *__dir_name;
+
 static gid_t __get_gid(const char *group_name)
 {
        char buf[sysconf(_SC_GETGR_R_SIZE_MAX)];
@@ -192,6 +193,11 @@ int _logger_get_fd(logger_h handle, int *fd)
        return 0;
 }
 
+const char *_logger_get_dir_name(void)
+{
+       return __dir_name;
+}
+
 static int __create_directory(const char *path)
 {
        gid_t gid;
@@ -219,15 +225,24 @@ static int __create_directory(const char *path)
 
 int _logger_init(void)
 {
+       char path[PATH_MAX];
        int ret;
 
-       ret = __create_directory(LOG_APPFW_PATH);
+       ret = __create_directory(_config_get_logger_path());
        if (ret < 0)
                return ret;
 
-       ret = __create_directory(LOG_PATH);
+       snprintf(path, sizeof(path), "%s/amd", _config_get_logger_path());
+       ret = __create_directory(path);
        if (ret < 0)
                return ret;
 
+       __dir_name = strdup(path);
+
        return 0;
 }
+
+void _logger_fini(void)
+{
+       free(__dir_name);
+}
index 5026399d09a67e153846e35a72b559892b19023f..b3fc223494309eabeb5a44bc6b588c5a981bb94c 100644 (file)
@@ -34,8 +34,12 @@ int _logger_print(logger_h handle, const char *tag, const char *format, ...);
 
 int _logger_get_fd(logger_h handle, int *fd);
 
+const char *_logger_get_dir_name(void);
+
 int _logger_init(void);
 
+void _logger_fini(void);
+
 #ifdef __cplusplus
 }
 #endif
index 21cbb98b0920cceba9f55b813b53b81e57d92119..cc9a50a90c7972fda1ec5fb1b88ad5e4dd9f7883 100644 (file)
@@ -327,6 +327,7 @@ static int __init(void)
        int r;
 
        __block_sigchld();
+       _config_init();
        _logger_init();
        _unix_signal_init();
        _request_init();
@@ -358,7 +359,6 @@ static int __init(void)
        _login_monitor_init();
        _util_init();
        _inotify_init();
-       _config_init();
        _anr_monitor_init();
        _launcher_service_init();
        _signal_init();
@@ -395,7 +395,6 @@ static void __finish(void)
        _launchpad_fini();
        _launcher_service_fini();
        _anr_monitor_fini();
-       _config_fini();
        _inotify_fini();
        _util_fini();
        _login_monitor_fini();
@@ -420,6 +419,8 @@ static void __finish(void)
        _compinfo_fini();
        _noti_fini();
        _unix_signal_fini();
+       _logger_fini();
+       _config_fini();
        __unblock_sigchld();
 }
 
index 873976718d9e4552db30f8e83c451f5af7221b07..f4efa147cd838939c88186bb60a05592110ffe9b 100644 (file)
 #include <execinfo.h>
 #include <signal.h>
 #include <stdio.h>
+#include <linux/limits.h>
 
+#include "amd_config.h"
 #include "amd_logger.h"
 #include "amd_unix_signal.h"
 #include "amd_util.h"
 
 #define BT_BUF_SIZE 128
-#define PATH_AMD_BACKTRACE "/var/log/appfw/amd/amd_backtrace.log"
 
 enum signo_e {
        SIGNO_HUP,
@@ -123,6 +124,7 @@ static void __unix_signal_handler(int signal, siginfo_t *info, void *arg)
 int _unix_signal_init(void)
 {
        struct sigaction action = { 0, };
+       char path[PATH_MAX];
        int ret;
        int i;
 
@@ -140,7 +142,9 @@ int _unix_signal_init(void)
                }
        }
 
-       ret = _logger_create(PATH_AMD_BACKTRACE, &logger);
+       snprintf(path, sizeof(path), "%s/amd_backtrace.log",
+                       _logger_get_dir_name());
+       ret = _logger_create(path, &logger);
        if (ret != 0)
                return ret;
 
index 434ae63d9486b77a10b6d99cf32b608bdeca53a9..73c6220b0470bcfff48e3998725a4fbc85f53414 100644 (file)
@@ -23,6 +23,7 @@
 #include <stdbool.h>
 #include <time.h>
 #include <fcntl.h>
+#include <linux/limits.h>
 #include <aul.h>
 #include <aul_sock.h>
 #include <bundle.h>
@@ -43,7 +44,6 @@
 
 #define OSP_K_DATACONTROL_PROVIDER "__OSP_DATACONTROL_PROVIDER__"
 #define MAX_NR_OF_DESCRIPTORS 2
-#define AMD_LOG_FILE "/var/log/appfw/amd/amd.log"
 
 static logger_h __logger;
 static GHashTable *__dc_socket_pair_hash;
@@ -516,9 +516,11 @@ static gboolean __retrying_handler(gpointer data)
 
 int _util_init(void)
 {
+       char path[PATH_MAX];
        int r;
 
-       r = _logger_create(AMD_LOG_FILE, &__logger);
+       snprintf(path, sizeof(path), "%s/amd.log", _logger_get_dir_name());
+       r = _logger_create(path, &__logger);
        if (r < 0)
                return -1;
 
index d363d2fd9995efe7658b752db3ab38bbd43a5840..ef19411c8de343582fd68c7c692bce2a5de75132 100644 (file)
@@ -41,3 +41,7 @@ extern "C" EXPORT_API int amd_logger_print(amd_logger_h handle, const char* tag,
 
        return _logger_print(reinterpret_cast<logger_h>(handle), tag, format_buf);
 }
+
+extern "C" EXPORT_API const char* amd_logger_get_dir_name(void) {
+  return _logger_get_dir_name();
+}
index 27444e4a0c0d4c28c96aceebdda987f67640857b..0bffb7a7ec9a96405ab1be7b32ec799146f029b6 100644 (file)
@@ -21,9 +21,6 @@
 extern "C" {
 #endif
 
-#undef LOGGER_PATH
-#define LOGGER_PATH "/var/log/appfw/amd"
-
 #undef LOG_MAX_STRING_SIZE
 #define LOG_MAX_STRING_SIZE 256
 
@@ -36,6 +33,8 @@ int amd_logger_destroy(amd_logger_h handle);
 int amd_logger_print(amd_logger_h handle, const char *tag,
                const char *format, ...);
 
+const char *amd_logger_get_dir_name(void);
+
 #ifdef __cplusplus
 }
 #endif
index 122ae9fd1d00f57390dd1f7becbafe86dbf0609e..82f4bab8510ea6e62bb69e8bcdbef88ae72d1198 100644 (file)
 #define _GNU_SOURCE
 #include <stdio.h>
 #include <stdarg.h>
+#include <linux/limits.h>
 #include <amd.h>
 
 #include "amd_watch_private.h"
 
 #define LOG_FILE "amd_watch.log"
-#define LOG_PATH LOGGER_PATH "/" LOG_FILE
 
 static amd_logger_h __logger;
 
@@ -40,10 +40,13 @@ int _watch_logger_print(const char *tag, const char *format, ...)
 
 int _watch_logger_init(void)
 {
+       char path[PATH_MAX];
        int ret;
 
        _D("watch logger init");
-       ret = amd_logger_create(LOG_PATH, &__logger);
+       snprintf(path, sizeof(path), "%s/%s",
+                       amd_logger_get_dir_name(), LOG_FILE);
+       ret = amd_logger_create(path, &__logger);
        if (ret < 0)
                return ret;
 
index 784ed38139e8ddba946eee60f83a7efce33275a9..b0e8092deaee115870e1a675550a987036aab1c3 100644 (file)
 #define _GNU_SOURCE
 #include <stdio.h>
 #include <stdarg.h>
+#include <linux/limits.h>
 #include <amd.h>
 
 #include "amd_watchdog_logger.h"
 #include "amd_watchdog_private.h"
 
 #define LOG_FILE "amd_watchdog.log"
-#define LOG_PATH LOGGER_PATH "/" LOG_FILE
 
 static amd_logger_h __logger;
 
@@ -41,10 +41,13 @@ int _watchdog_logger_print(const char *tag, const char *format, ...)
 
 int _watchdog_logger_init(void)
 {
+       char path[PATH_MAX];
        int ret;
 
        _D("Watchdog logger init");
-       ret = amd_logger_create(LOG_PATH, &__logger);
+       snprintf(path, sizeof(path), "%s/%s",
+                       amd_logger_get_dir_name(), LOG_FILE);
+       ret = amd_logger_create(path, &__logger);
        if (ret < 0)
                return ret;
 
index 929ab2864c31dc147d55c19a1faaf491f1232a7c..e96588d90ba900963e161a355979186e38ab62a1 100644 (file)
 #define _GNU_SOURCE
 #include <stdio.h>
 #include <stdarg.h>
+#include <linux/limits.h>
 #include <amd.h>
 
 #include "amd_widget_logger.h"
 #include "amd_widget_private.h"
 
 #define LOG_FILE "amd_widget.log"
-#define LOG_PATH LOGGER_PATH "/" LOG_FILE
 #define LOG_MAX_STRING_SIZE 256
 
 static amd_logger_h __logger;
@@ -42,10 +42,13 @@ int _widget_logger_print(const char *tag, const char *format, ...)
 
 int _widget_logger_init(void)
 {
+       char path[PATH_MAX];
        int ret;
 
        _D("widget logger init");
-       ret = amd_logger_create(LOG_PATH, &__logger);
+       snprintf(path, sizeof(path), "%s/%s",
+                       amd_logger_get_dir_name(), LOG_FILE);
+       ret = amd_logger_create(path, &__logger);
        if (ret < 0)
                return ret;