Lift length limit on Android logging
This commit is contained in:
parent
4d637342f7
commit
ecd62e7eb2
2 changed files with 29 additions and 23 deletions
|
@ -56,7 +56,7 @@ void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, const char
|
|||
if (instance) {
|
||||
instance->Log(level, type, file, line, fmt, args);
|
||||
} else {
|
||||
// Fall back to printf if we're before the log manager has been initialized.
|
||||
// Fall back to printf or direct android logger with a small buffer if the log manager hasn't been initialized yet.
|
||||
#if PPSSPP_PLATFORM(ANDROID)
|
||||
char temp[512];
|
||||
vsnprintf(temp, sizeof(temp), fmt, args);
|
||||
|
|
|
@ -198,38 +198,44 @@ AndroidGraphicsContext *graphicsContext;
|
|||
#define LOG_APP_NAME "PPSSPP"
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define DLOG(...) __android_log_print(ANDROID_LOG_INFO, LOG_APP_NAME, __VA_ARGS__);
|
||||
#else
|
||||
#define DLOG(...)
|
||||
#endif
|
||||
|
||||
#define ILOG(...) __android_log_print(ANDROID_LOG_INFO, LOG_APP_NAME, __VA_ARGS__);
|
||||
#define WLOG(...) __android_log_print(ANDROID_LOG_WARN, LOG_APP_NAME, __VA_ARGS__);
|
||||
#define ELOG(...) __android_log_print(ANDROID_LOG_ERROR, LOG_APP_NAME, __VA_ARGS__);
|
||||
#define FLOG(...) __android_log_print(ANDROID_LOG_FATAL, LOG_APP_NAME, __VA_ARGS__);
|
||||
|
||||
#define MessageBox(a, b, c, d) __android_log_print(ANDROID_LOG_INFO, APP_NAME, "%s %s", (b), (c));
|
||||
|
||||
void AndroidLogger::Log(const LogMessage &message) {
|
||||
// Log with simplified headers as Android already provides timestamp etc.
|
||||
int mode;
|
||||
switch (message.level) {
|
||||
case LogTypes::LVERBOSE:
|
||||
case LogTypes::LDEBUG:
|
||||
case LogTypes::LINFO:
|
||||
ILOG("[%s] %s", message.log, message.msg.c_str());
|
||||
case LogTypes::LWARNING:
|
||||
mode = ANDROID_LOG_WARN;
|
||||
break;
|
||||
case LogTypes::LERROR:
|
||||
ELOG("[%s] %s", message.log, message.msg.c_str());
|
||||
mode = ANDROID_LOG_ERROR;
|
||||
break;
|
||||
case LogTypes::LWARNING:
|
||||
WLOG("[%s] %s", message.log, message.msg.c_str());
|
||||
break;
|
||||
case LogTypes::LNOTICE:
|
||||
default:
|
||||
ILOG("[%s] !!! %s", message.log, message.msg.c_str());
|
||||
mode = ANDROID_LOG_INFO;
|
||||
break;
|
||||
}
|
||||
|
||||
// Long log messages need splitting up.
|
||||
// Not sure what the actual limit is (seems to vary), but let's be conservative.
|
||||
const size_t maxLogLength = 512;
|
||||
if (message.msg.length() < maxLogLength) {
|
||||
// Log with simplified headers as Android already provides timestamp etc.
|
||||
__android_log_print(mode, LOG_APP_NAME, "[%s] %s", message.log, message.msg.c_str());
|
||||
} else {
|
||||
std::string msg = message.msg;
|
||||
|
||||
// Ideally we should split at line breaks, but it's at least fairly usable anyway.
|
||||
std::string first_part = msg.substr(0, maxLogLength);
|
||||
__android_log_print(mode, LOG_APP_NAME, "[%s] %s", message.log, first_part.c_str());
|
||||
msg = msg.substr(maxLogLength);
|
||||
|
||||
while (msg.length() > maxLogLength) {
|
||||
std::string first_part = msg.substr(0, maxLogLength);
|
||||
__android_log_print(mode, LOG_APP_NAME, "%s", first_part.c_str());
|
||||
msg = msg.substr(maxLogLength);
|
||||
}
|
||||
// Print the final part.
|
||||
__android_log_print(mode, LOG_APP_NAME, "%s", msg.c_str());
|
||||
}
|
||||
}
|
||||
|
||||
JNIEnv* getEnv() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue