Add mono log message to error for fatal errors

(cherry picked from commit c15fb42d45)
This commit is contained in:
Tom Daffin 2020-09-13 09:09:28 -06:00 committed by Rémi Verschelde
parent 508dde662a
commit 46b4e82f92
No known key found for this signature in database
GPG Key ID: C3336907360768E1
1 changed files with 16 additions and 9 deletions

View File

@ -64,26 +64,33 @@ static int get_log_level_id(const char *p_log_level) {
return -1; return -1;
} }
static String make_text(const char *log_domain, const char *log_level, const char *message) {
String text(message);
text += " (in domain ";
text += log_domain;
if (log_level) {
text += ", ";
text += log_level;
}
text += ")";
return text;
}
void GDMonoLog::mono_log_callback(const char *log_domain, const char *log_level, const char *message, mono_bool fatal, void *) { void GDMonoLog::mono_log_callback(const char *log_domain, const char *log_level, const char *message, mono_bool fatal, void *) {
FileAccess *f = GDMonoLog::get_singleton()->log_file; FileAccess *f = GDMonoLog::get_singleton()->log_file;
if (GDMonoLog::get_singleton()->log_level_id >= get_log_level_id(log_level)) { if (GDMonoLog::get_singleton()->log_level_id >= get_log_level_id(log_level)) {
String text(message); String text = make_text(log_domain, log_level, message);
text += " (in domain "; text += "\n";
text += log_domain;
if (log_level) {
text += ", ";
text += log_level;
}
text += ")\n";
f->seek_end(); f->seek_end();
f->store_string(text); f->store_string(text);
} }
if (fatal) { if (fatal) {
ERR_PRINTS("Mono: FATAL ERROR, ABORTING! Logfile: '" + GDMonoLog::get_singleton()->log_file_path + "'."); String text = make_text(log_domain, log_level, message);
ERR_PRINT("Mono: FATAL ERROR '" + text + "', ABORTING! Logfile: '" + GDMonoLog::get_singleton()->log_file_path + "'.");
// Make sure to flush before aborting // Make sure to flush before aborting
f->flush(); f->flush();
f->close(); f->close();