diff --git a/CHANGELOG.md b/CHANGELOG.md index c1f91f6b..97723300 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - Truncate sidebar servers to a max of 10 ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/552)) - Upgrade to FA 6. Add Translations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/549))([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/558)) - Forge installer and Java Detection improvements ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/559)) +- Crafty log clean up -config option ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/563)) ### Lang - Add additional translations to backups page strings ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/543)) - Add additional missing translations ([Merge Request](https://gitlab.com/crafty-controller/crafty-4/-/merge_requests/549)) diff --git a/app/classes/shared/helpers.py b/app/classes/shared/helpers.py index 4374c99f..cf108bcd 100644 --- a/app/classes/shared/helpers.py +++ b/app/classes/shared/helpers.py @@ -441,6 +441,7 @@ class Helpers: "reset_secrets_on_next_boot": False, "monitored_mounts": mounts, "dir_size_poll_freq_minutes": 5, + "crafty_logs_delete_after_days": 0, } def get_all_settings(self): diff --git a/app/classes/shared/tasks.py b/app/classes/shared/tasks.py index 3a57cf90..8f51842b 100644 --- a/app/classes/shared/tasks.py +++ b/app/classes/shared/tasks.py @@ -751,10 +751,42 @@ class TasksManager: logger.debug("Could not clear out file from import directory") def log_watcher(self): - self.controller.servers.check_for_old_logs() + self.check_for_old_logs() self.scheduler.add_job( - self.controller.servers.check_for_old_logs, + self.check_for_old_logs, "interval", hours=6, id="log-mgmt", ) + + def check_for_old_logs(self): + # check for server logs first + self.controller.servers.check_for_old_logs() + # check for crafty logs now + logs_path = os.path.join(self.controller.project_root, "logs") + logs_delete_after = int( + self.helper.get_setting("crafty_logs_delete_after_days") + ) + latest_log_files = [ + "session.log", + "schedule.log", + "tornado-access.log", + "session.log", + "commander.log", + ] + # we won't delete if delete logs after is set to 0 + if logs_delete_after != 0: + log_files = list( + filter( + lambda val: val not in latest_log_files, + os.listdir(logs_path), + ) + ) + for log_file in log_files: + log_file_path = os.path.join(logs_path, log_file) + if Helpers.check_file_exists( + log_file_path + ) and Helpers.is_file_older_than_x_days( + log_file_path, logs_delete_after + ): + os.remove(log_file_path)