about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorMichael Vetter <jubalh@iodoru.org>2022-04-29 19:38:51 +0200
committerGitHub <noreply@github.com>2022-04-29 19:38:51 +0200
commit20e6577114251d899e0b279dcfd95a16323692cf (patch)
tree0d6c67fc1c40b9a9c34fcae002400a776902f9c8 /src
parente0bcaaf81fa93c9a258809bbe26859f0922654c7 (diff)
parent82a2b17c1febf544a81cdb4958519489960bcc81 (diff)
downloadprofani-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.h2
-rw-r--r--src/log.c25
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);