From df8e80d4fba84fbefc4c2a89d9e898bda6e146d5 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 9 May 2021 15:56:38 -0700 Subject: [PATCH] Common: Use C FILE for log file output. Not strictly needed for Android paths, but may be convenient. --- Common/LogManager.cpp | 16 +++++++++------- Common/LogManager.h | 9 +++++---- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/Common/LogManager.cpp b/Common/LogManager.cpp index 113dc8200a..70298f7c4e 100644 --- a/Common/LogManager.cpp +++ b/Common/LogManager.cpp @@ -291,12 +291,13 @@ void LogManager::RemoveListener(LogListener *listener) { } FileLogListener::FileLogListener(const char *filename) { -#if defined(_WIN32) && !defined(__MINGW32__) - m_logfile.open(ConvertUTF8ToWString(filename).c_str(), std::ios::app); -#else - m_logfile.open(filename, std::ios::app); -#endif - SetEnabled(true); + fp_ = File::OpenCFile(filename, "at"); + SetEnabled(fp_ != nullptr); +} + +FileLogListener::~FileLogListener() { + if (fp_) + fclose(fp_); } void FileLogListener::Log(const LogMessage &message) { @@ -304,7 +305,8 @@ void FileLogListener::Log(const LogMessage &message) { return; std::lock_guard lk(m_log_lock); - m_logfile << message.timestamp << " " << message.header << " " << message.msg << std::flush; + fprintf(fp_, "%s %s %s", message.timestamp, message.header, message.msg.c_str()); + fflush(fp_); } void OutputDebugStringLogListener::Log(const LogMessage &message) { diff --git a/Common/LogManager.h b/Common/LogManager.h index f5d4c61f12..805c48c5f8 100644 --- a/Common/LogManager.h +++ b/Common/LogManager.h @@ -19,10 +19,10 @@ #include "ppsspp_config.h" -#include #include #include #include +#include #include "Common/Data/Format/IniFile.h" #include "Common/CommonFuncs.h" @@ -53,18 +53,19 @@ public: class FileLogListener : public LogListener { public: FileLogListener(const char *filename); + ~FileLogListener(); void Log(const LogMessage &msg); - bool IsValid() { if (!m_logfile) return false; else return true; } + bool IsValid() { if (!fp_) return false; else return true; } bool IsEnabled() const { return m_enable; } void SetEnabled(bool enable) { m_enable = enable; } - const char* GetName() const { return "file"; } + const char *GetName() const { return "file"; } private: std::mutex m_log_lock; - std::ofstream m_logfile; + FILE *fp_ = nullptr; bool m_enable; };