project64/Source/Project64-audio/trace.cpp

83 lines
2.5 KiB
C++
Raw Normal View History

2017-09-11 11:57:21 +00:00
#include "trace.h"
#include <Settings/Settings.h>
#include <Common/path.h>
#include <Common/LogClass.h>
#include "AudioSettings.h"
#ifdef ANDROID
#include <android/log.h>
class AndroidLogger : public CTraceModule
{
void Write(uint32_t module, uint8_t severity, const char * file, int line, const char * function, const char * Message)
{
switch (severity)
{
case TraceError: __android_log_print(ANDROID_LOG_ERROR, TraceModule(module), "%s: %s", function, Message); break;
case TraceWarning: __android_log_print(ANDROID_LOG_WARN, TraceModule(module), "%s: %s", function, Message); break;
case TraceNotice: __android_log_print(ANDROID_LOG_INFO, TraceModule(module), "%s: %s", function, Message); break;
case TraceInfo: __android_log_print(ANDROID_LOG_INFO, TraceModule(module), "%s: %s", function, Message); break;
case TraceDebug: __android_log_print(ANDROID_LOG_DEBUG, TraceModule(module), "%s: %s", function, Message); break;
case TraceVerbose: __android_log_print(ANDROID_LOG_VERBOSE, TraceModule(module), "%s: %s", function, Message); break;
default: __android_log_print(ANDROID_LOG_UNKNOWN, TraceModule(module), "%s: %s", function, Message); break;
}
}
void FlushTrace(void)
{
}
};
2021-04-12 11:35:39 +00:00
static AndroidLogger * g_AndroidLogger = nullptr;
#endif
2021-04-12 11:35:39 +00:00
static CTraceFileLog * g_LogFile = nullptr;
void SetupTrace(void)
{
2021-04-12 11:35:39 +00:00
if (g_LogFile != nullptr)
{
return;
}
#ifdef ANDROID
2021-04-12 11:35:39 +00:00
if (g_AndroidLogger == nullptr)
{
g_AndroidLogger = new AndroidLogger();
}
TraceAddModule(g_AndroidLogger);
#endif
#ifdef _DEBUG
TraceSetMaxModule(MaxTraceModulePluginAudio, TraceInfo);
#else
TraceSetMaxModule(MaxTraceModulePluginAudio, TraceError);
#endif
TraceSetModuleName(TraceAudioInitShutdown, "AudioInitShutdown");
TraceSetModuleName(TraceAudioInterface, "AudioInterface");
2017-09-11 22:16:45 +00:00
TraceSetModuleName(TraceAudioDriver, "AudioDriver");
}
void StartTrace(void)
{
2021-04-12 11:35:39 +00:00
const char * log_dir = g_settings ? g_settings->log_dir() : nullptr;
if (log_dir == nullptr || log_dir[0] == '\0')
{
return;
}
2017-09-11 22:16:45 +00:00
CPath LogFilePath(log_dir, "Project64-audio.log");
if (!LogFilePath.DirectoryExists())
{
LogFilePath.DirectoryCreate();
}
2017-09-14 08:07:12 +00:00
g_LogFile = new CTraceFileLog(LogFilePath, g_settings->FlushLogs(), CLog::Log_New, 500);
TraceAddModule(g_LogFile);
2018-11-24 02:41:50 +00:00
}
void StopTrace(void)
{
if (g_LogFile)
{
TraceRemoveModule(g_LogFile);
delete g_LogFile;
2021-04-12 11:35:39 +00:00
g_LogFile = nullptr;
2018-11-24 02:41:50 +00:00
}
}