Add mono log message to error for fatal errors

This commit is contained in:
Tom Daffin 2020-09-13 09:09:28 -06:00
parent de465c41dc
commit c15fb42d45

View file

@ -64,25 +64,32 @@ static int get_log_level_id(const char *p_log_level) {
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 *) {
FileAccess *f = GDMonoLog::get_singleton()->log_file;
if (GDMonoLog::get_singleton()->log_level_id >= get_log_level_id(log_level)) {
String text(message);
text += " (in domain ";
text += log_domain;
if (log_level) {
text += ", ";
text += log_level;
}
text += ")\n";
String text = make_text(log_domain, log_level, message);
text += "\n";
f->seek_end();
f->store_string(text);
}
if (fatal) {
ERR_PRINT("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
f->flush();
f->close();