Common: Use C FILE for log file output.

Not strictly needed for Android paths, but may be convenient.
This commit is contained in:
Unknown W. Brackets 2021-05-09 15:56:38 -07:00
parent 2999e1cb86
commit df8e80d4fb
2 changed files with 14 additions and 11 deletions

View File

@ -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<std::mutex> 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) {

View File

@ -19,10 +19,10 @@
#include "ppsspp_config.h"
#include <fstream>
#include <mutex>
#include <vector>
#include <cstdarg>
#include <cstdio>
#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;
};