diff --git a/ErrorHandler.cc b/ErrorHandler.cc index fb7e4f8..ebd0c1f 100644 --- a/ErrorHandler.cc +++ b/ErrorHandler.cc @@ -20,6 +20,8 @@ ErrorHandler::ErrorHandler() fs::create_directories(log_dir); } log_file_path_ = (log_dir / "error.log").string(); + // Create the log file immediately so it exists in the state directory + ensure_log_file(); } catch (...) { // If we can't create the directory, disable file logging file_logging_enabled_ = false; @@ -34,11 +36,7 @@ ErrorHandler::ErrorHandler() ErrorHandler::~ErrorHandler() { std::lock_guard lg(mtx_); - if (log_file_ &&log_file_ - -> - is_open() - ) - { + if (log_file_ && log_file_->is_open()) { log_file_->flush(); log_file_->close(); } @@ -249,11 +247,8 @@ void ErrorHandler::ensure_log_file() { // Must be called with mtx_ held - if (log_file_ &&log_file_ - -> - is_open() - ) - return; + if (log_file_ && log_file_->is_open()) + return; if (log_file_path_.empty()) return; @@ -313,6 +308,6 @@ std::uint64_t ErrorHandler::now_ns() { using namespace std::chrono; - return duration_cast(steady_clock::now().time_since_epoch()).count(); + return duration_cast(system_clock::now().time_since_epoch()).count(); } -} // namespace kte \ No newline at end of file +} // namespace kte diff --git a/main.cc b/main.cc index 792b222..d166711 100644 --- a/main.cc +++ b/main.cc @@ -117,6 +117,9 @@ main(int argc, char *argv[]) { std::setlocale(LC_ALL, ""); + // Ensure the error handler (and its log file) is initialised early. + kte::ErrorHandler::Instance(); + Editor editor; // CLI parsing using getopt_long