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; };