diff options
author | Michael Vetter <jubalh@iodoru.org> | 2022-04-29 19:38:51 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-29 19:38:51 +0200 |
commit | 20e6577114251d899e0b279dcfd95a16323692cf (patch) | |
tree | 0d6c67fc1c40b9a9c34fcae002400a776902f9c8 /src | |
parent | e0bcaaf81fa93c9a258809bbe26859f0922654c7 (diff) | |
parent | 82a2b17c1febf544a81cdb4958519489960bcc81 (diff) | |
download | profani-tty-20e6577114251d899e0b279dcfd95a16323692cf.tar.gz |
Merge pull request #1701 from profanity-im/log-changes
Log file improvements
Diffstat (limited to 'src')
-rw-r--r-- | src/config/preferences.h | 2 | ||||
-rw-r--r-- | src/log.c | 25 |
2 files changed, 16 insertions, 11 deletions
diff --git a/src/config/preferences.h b/src/config/preferences.h index b663e82a..46f2669a 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -42,7 +42,7 @@ #include <glib.h> #define PREFS_MIN_LOG_SIZE 64 -#define PREFS_MAX_LOG_SIZE 1048580 +#define PREFS_MAX_LOG_SIZE (10 * 1024 * 1024) // represents all settings in .profrc // each enum value is mapped to a group and key in .profrc (see preferences.c) diff --git a/src/log.c b/src/log.c index 296f20b5..8108151f 100644 --- a/src/log.c +++ b/src/log.c @@ -59,9 +59,6 @@ static FILE* logp; static gchar* mainlogfile = NULL; static gboolean user_provided_log = FALSE; - -static GTimeZone* tz; -static GDateTime* dt; static log_level_t level_filter; static GHashTable* logs; @@ -150,7 +147,6 @@ void log_init(log_level_t filter, char* log_file) { level_filter = filter; - tz = g_time_zone_new_local(); if (log_file) { user_provided_log = TRUE; @@ -182,7 +178,6 @@ log_close(void) { g_free(mainlogfile); mainlogfile = NULL; - g_time_zone_unref(tz); if (logp) { fclose(logp); } @@ -192,7 +187,7 @@ void log_msg(log_level_t level, const char* const area, const char* const msg) { if (level >= level_filter && logp) { - dt = g_date_time_new_now(tz); + GDateTime* dt = g_date_time_new_now_local(); char* level_str = _log_string_from_level(level); @@ -235,17 +230,27 @@ _rotate_log_file(void) { gchar* log_file = g_strdup(mainlogfile); size_t len = strlen(log_file); - gchar* log_file_new = malloc(len + 4); + gchar* log_file_new = malloc(len + 5); + + // the mainlog file should always end in '.log', lets remove this last part + // so that we can have profanity.001.log later + if (len > 4) { + log_file[len - 4] = '\0'; + } - // find an empty name. from .log -> log.01 -> log.99 - for (int i = 1; i < 100; i++) { - g_sprintf(log_file_new, "%s.%02d", log_file, i); + // find an empty name. from .log -> log.001 -> log.999 + for (int i = 1; i < 1000; i++) { + g_sprintf(log_file_new, "%s.%03d.log", log_file, i); if (!g_file_test(log_file_new, G_FILE_TEST_EXISTS)) break; } log_close(); + if (len > 4) { + log_file[len - 4] = '.'; + } + rename(log_file, log_file_new); log_init(log_get_filter(), NULL); |