summaryrefslogtreecommitdiff
path: root/src/common/logging
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/logging')
-rw-r--r--src/common/logging/backend.cpp27
-rw-r--r--src/common/logging/backend.h5
2 files changed, 15 insertions, 17 deletions
diff --git a/src/common/logging/backend.cpp b/src/common/logging/backend.cpp
index 96efa977d..6aa8ac960 100644
--- a/src/common/logging/backend.cpp
+++ b/src/common/logging/backend.cpp
@@ -11,13 +11,13 @@
11#include <mutex> 11#include <mutex>
12#include <thread> 12#include <thread>
13#include <vector> 13#include <vector>
14
14#ifdef _WIN32 15#ifdef _WIN32
15#include <share.h> // For _SH_DENYWR
16#include <windows.h> // For OutputDebugStringW 16#include <windows.h> // For OutputDebugStringW
17#else
18#define _SH_DENYWR 0
19#endif 17#endif
18
20#include "common/assert.h" 19#include "common/assert.h"
20#include "common/fs/fs.h"
21#include "common/logging/backend.h" 21#include "common/logging/backend.h"
22#include "common/logging/log.h" 22#include "common/logging/log.h"
23#include "common/logging/text_formatter.h" 23#include "common/logging/text_formatter.h"
@@ -148,19 +148,16 @@ void ColorConsoleBackend::Write(const Entry& entry) {
148 PrintColoredMessage(entry); 148 PrintColoredMessage(entry);
149} 149}
150 150
151FileBackend::FileBackend(const std::string& filename) { 151FileBackend::FileBackend(const std::filesystem::path& filename) {
152 const auto old_filename = filename + ".old.txt"; 152 auto old_filename = filename;
153 old_filename += ".old.txt";
153 154
154 if (FS::Exists(old_filename)) { 155 // Existence checks are done within the functions themselves.
155 FS::Delete(old_filename); 156 // We don't particularly care if these succeed or not.
156 } 157 void(FS::RemoveFile(old_filename));
157 if (FS::Exists(filename)) { 158 void(FS::RenameFile(filename, old_filename));
158 FS::Rename(filename, old_filename);
159 }
160 159
161 // _SH_DENYWR allows read only access to the file for other programs. 160 file = FS::IOFile(filename, FS::FileAccessMode::Write, FS::FileType::TextFile);
162 // It is #defined to 0 on other platforms
163 file = FS::IOFile(filename, "w", _SH_DENYWR);
164} 161}
165 162
166void FileBackend::Write(const Entry& entry) { 163void FileBackend::Write(const Entry& entry) {
@@ -181,7 +178,7 @@ void FileBackend::Write(const Entry& entry) {
181 178
182 bytes_written += file.WriteString(FormatLogMessage(entry).append(1, '\n')); 179 bytes_written += file.WriteString(FormatLogMessage(entry).append(1, '\n'));
183 if (entry.log_level >= Level::Error) { 180 if (entry.log_level >= Level::Error) {
184 file.Flush(); 181 void(file.Flush());
185 } 182 }
186} 183}
187 184
diff --git a/src/common/logging/backend.h b/src/common/logging/backend.h
index 9dd2589c3..eb629a33f 100644
--- a/src/common/logging/backend.h
+++ b/src/common/logging/backend.h
@@ -4,10 +4,11 @@
4#pragma once 4#pragma once
5 5
6#include <chrono> 6#include <chrono>
7#include <filesystem>
7#include <memory> 8#include <memory>
8#include <string> 9#include <string>
9#include <string_view> 10#include <string_view>
10#include "common/file_util.h" 11#include "common/fs/file.h"
11#include "common/logging/filter.h" 12#include "common/logging/filter.h"
12#include "common/logging/log.h" 13#include "common/logging/log.h"
13 14
@@ -81,7 +82,7 @@ public:
81 */ 82 */
82class FileBackend : public Backend { 83class FileBackend : public Backend {
83public: 84public:
84 explicit FileBackend(const std::string& filename); 85 explicit FileBackend(const std::filesystem::path& filename);
85 86
86 static const char* Name() { 87 static const char* Name() {
87 return "file"; 88 return "file";