diff --git a/core/io/logger.cpp b/core/io/logger.cpp index 4796d27bad2..57d7f8cd177 100644 --- a/core/io/logger.cpp +++ b/core/io/logger.cpp @@ -33,7 +33,6 @@ #include "core/os/dir_access.h" #include "core/os/os.h" #include "core/print_string.h" -#include "core/project_settings.h" // va_copy was defined in the C99, but not in C++ standards before C++11. // When you compile C++ without --std=c++ option, compilers still define @@ -205,14 +204,15 @@ void RotatedFileLogger::logv(const char *p_format, va_list p_list, bool p_err) { } va_end(list_copy); file->store_buffer((uint8_t *)buf, len); - if (len >= static_buf_size) { Memory::free_static(buf); } - - if (p_err || GLOBAL_GET("application/run/flush_stdout_on_print")) { - // Don't always flush when printing stdout to avoid performance - // issues when `print()` is spammed in release builds. +#ifdef DEBUG_ENABLED + const bool need_flush = true; +#else + bool need_flush = p_err; +#endif + if (need_flush) { file->flush(); } } @@ -231,11 +231,9 @@ void StdLogger::logv(const char *p_format, va_list p_list, bool p_err) { vfprintf(stderr, p_format, p_list); } else { vprintf(p_format, p_list); - if (GLOBAL_GET("application/run/flush_stdout_on_print")) { - // Don't always flush when printing stdout to avoid performance - // issues when `print()` is spammed in release builds. - fflush(stdout); - } +#ifdef DEBUG_ENABLED + fflush(stdout); +#endif } } diff --git a/doc/classes/ProjectSettings.xml b/doc/classes/ProjectSettings.xml index 83fd0c41ff5..45e724326e6 100644 --- a/doc/classes/ProjectSettings.xml +++ b/doc/classes/ProjectSettings.xml @@ -248,14 +248,6 @@ If [code]true[/code], disables printing to standard output in an exported build. - - If [code]true[/code], flushes the standard output stream every time a line is printed. This affects both terminal logging and file logging. - When running a project, this setting must be enabled if you want logs to be collected by service managers such as systemd/journalctl. This setting is disabled by default on release builds, since flushing on every printed line will negatively affect performance if lots of lines are printed in a rapid succession. Also, if this setting is enabled, logged files will still be written successfully if the application crashes or is otherwise killed by the user (without being closed "normally"). - [b]Note:[/b] Regardless of this setting, the standard error stream ([code]stderr[/code]) is always flushed when a line is printed to it. - - - Debug build override for [member application/run/flush_stdout_on_print], as performance is less important during debugging. - Forces a delay between frames in the main loop (in milliseconds). This may be useful if you plan to disable vertical synchronization. diff --git a/main/main.cpp b/main/main.cpp index 6fc077e6ef7..4f3f4523cef 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -369,11 +369,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph ClassDB::register_class(); engine->add_singleton(Engine::Singleton("Performance", performance)); - // Only flush stdout in debug builds by default, as spamming `print()` will - // decrease performance if this is enabled. - GLOBAL_DEF("application/run/flush_stdout_on_print", false); - GLOBAL_DEF("application/run/flush_stdout_on_print.debug", true); - GLOBAL_DEF("debug/settings/crash_handler/message", String("Please include this when reporting the bug on https://github.com/godotengine/godot/issues")); MAIN_PRINT("Main: Parse CMDLine");