From 115109efb9bcab7074296f18fcba7f148270abb0 Mon Sep 17 00:00:00 2001 From: Francesco Date: Tue, 2 Dec 2025 01:12:48 +0100 Subject: [PATCH] feat(log): use syslog logging --- include/utils/debug.h | 5 +++++ src/main.c | 10 ++++++++++ src/meson.build | 1 + src/utils/debug.c | 29 +++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+) create mode 100644 src/utils/debug.c diff --git a/include/utils/debug.h b/include/utils/debug.h index 3a28809..03d3055 100644 --- a/include/utils/debug.h +++ b/include/utils/debug.h @@ -31,4 +31,9 @@ #define CWS_LOG_WARNING(msg, ...) fprintf(stdout, _WARNING " " msg "\n", ##__VA_ARGS__) #define CWS_LOG_INFO(msg, ...) fprintf(stdout, _INFO " " msg "\n", ##__VA_ARGS__) +void cws_log_init(void); +void cws_log_info(const char *fmt, ...); +void cws_log_error(const char *fmt, ...); +void cws_log_shutdown(void); + #endif diff --git a/src/main.c b/src/main.c index 281485a..cff4d9a 100644 --- a/src/main.c +++ b/src/main.c @@ -14,13 +14,18 @@ void cws_signal_handler(int) { } int main(void) { + cws_log_info("Running cws..."); + if (signal(SIGINT, cws_signal_handler) == SIG_ERR) { + cws_log_error("signal()"); CWS_LOG_ERROR("signal()"); + return EXIT_FAILURE; } cws_config_s *config = cws_config_init(); if (!config) { + cws_log_error("Unable to read config file"); CWS_LOG_ERROR("Unable to read config file"); return EXIT_FAILURE; @@ -42,12 +47,17 @@ int main(void) { ret = cws_server_setup(&server, config); if (ret != CWS_OK) { + cws_log_error("Unable to setup web server: %s", cws_error_str(ret)); CWS_LOG_ERROR("Unable to setup web server: %s", cws_error_str(ret)); + cws_config_free(config); + + return EXIT_FAILURE; } CWS_LOG_INFO("Running cws on http://%s:%s...", config->hostname, config->port); ret = cws_server_start(&server); if (ret != CWS_OK) { + cws_log_error("Unable to start web server: %s", cws_error_str(ret)); CWS_LOG_ERROR("Unable to start web server: %s", cws_error_str(ret)); } diff --git a/src/meson.build b/src/meson.build index 868cbae..3af91c5 100644 --- a/src/meson.build +++ b/src/meson.build @@ -7,6 +7,7 @@ server += files( ) server += files('config/config.c') server += files( + 'utils/debug.c', 'utils/error.c', 'utils/hash.c', 'utils/net.c', diff --git a/src/utils/debug.c b/src/utils/debug.c new file mode 100644 index 0000000..ba91002 --- /dev/null +++ b/src/utils/debug.c @@ -0,0 +1,29 @@ +#include "utils/debug.h" +#include +#include + +void cws_log_init(void) { + openlog("cws", LOG_PID | LOG_CONS, LOG_DAEMON); +} + +void cws_log_info(const char *fmt, ...) { + va_list args; + va_start(args, fmt); + + syslog(LOG_INFO, fmt, args); + + va_end(args); +} + +void cws_log_error(const char *fmt, ...) { + va_list args; + va_start(args, fmt); + + syslog(LOG_ERR, fmt, args); + + va_end(args); +} + +void cws_log_shutdown(void) { + closelog(); +}