aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDedicatedTest/logCompression.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDedicatedTest/logCompression.cpp')
-rw-r--r--NorthstarDedicatedTest/logCompression.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/NorthstarDedicatedTest/logCompression.cpp b/NorthstarDedicatedTest/logCompression.cpp
new file mode 100644
index 00000000..d9e89fdf
--- /dev/null
+++ b/NorthstarDedicatedTest/logCompression.cpp
@@ -0,0 +1,64 @@
+#include "pch.h"
+#include "logCompression.h"
+#include <fstream>
+#include <string>
+#include <iostream>
+#include <filesystem>
+#include "configurables.h"
+#include "zlib/gzip/compress.hpp"
+#include "zlib/gzip/config.hpp"
+#include <zlib.h>
+
+#define CHUNK 16384
+
+namespace fs = std::filesystem;
+using namespace std;
+
+bool compressFile(const fs::path path)
+{
+ // read log file
+ ofstream output;
+ string filename(path.string());
+ cout << "Compressing : '" + filename + "'" << endl;
+ ifstream input(filename, ios_base::binary);
+ if (!input.is_open())
+ {
+ cerr << "Could not open : '" + filename + "'" << endl;
+ return false;
+ }
+ string log_data((istreambuf_iterator<char>(input.rdbuf())), istreambuf_iterator<char>());
+ input.close();
+ // compress log file
+ string compressed_data = gzip::compress(log_data.data(), log_data.size());
+ // write log file gzip
+ output.open(filename + ".gz");
+ if (!output.is_open())
+ {
+ cerr << "Could not write : '" + filename + "'" << endl;
+ return false;
+ }
+ output << compressed_data;
+ output.close();
+ // delete log file
+ remove(path);
+ if (std::ifstream(path))
+ {
+ cerr << "Error deleting : '%s'" + filename + "'" << endl;
+ return false;
+ }
+ return true;
+}
+
+void CompressLogFiles()
+{
+ string path = GetNorthstarPrefix() + "/logs";
+ for (const auto& entry : fs::directory_iterator(path))
+ {
+ fs::path link = entry.path();
+ string extension = link.extension().string();
+ if (extension == ".txt" || extension == ".dmp")
+ {
+ compressFile(link);
+ }
+ }
+} \ No newline at end of file