From d48c68cf3f8f1467ae94fc2ef211347d81eca121 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 14 Jul 2023 15:14:59 +0100 Subject: [PATCH] AK: Automatically copy all warn/warnln logs to debug console This is only enabled inside Serenity, as on Lagom, all out/warn/dbg logs go to the same console anyway. --- AK/Format.h | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/AK/Format.h b/AK/Format.h index 2d0768e358..cc93afad39 100644 --- a/AK/Format.h +++ b/AK/Format.h @@ -557,6 +557,9 @@ struct Formatter : Formatter { ErrorOr vformat(StringBuilder&, StringView fmtstr, TypeErasedFormatParams&); +void vdbg(StringView fmtstr, TypeErasedFormatParams&, bool newline = false); +void dbgln(); + #ifndef KERNEL void vout(FILE*, StringView fmtstr, TypeErasedFormatParams&, bool newline = false); @@ -593,13 +596,30 @@ inline void outln() { outln(stdout); } template void warn(CheckedFormatString&& fmtstr, Parameters const&... parameters) { +# ifdef AK_OS_SERENITY + VariadicFormatParams variadic_format_params { parameters... }; + vdbg(fmtstr.view(), variadic_format_params, false); +# endif out(stderr, move(fmtstr), parameters...); } template -void warnln(CheckedFormatString&& fmtstr, Parameters const&... parameters) { outln(stderr, move(fmtstr), parameters...); } +void warnln(CheckedFormatString&& fmtstr, Parameters const&... parameters) +{ +# ifdef AK_OS_SERENITY + VariadicFormatParams variadic_format_params { parameters... }; + vdbg(fmtstr.view(), variadic_format_params, true); +# endif + outln(stderr, move(fmtstr), parameters...); +} -inline void warnln() { outln(stderr); } +inline void warnln() +{ +# ifdef AK_OS_SERENITY + dbgln(); +# endif + outln(stderr); +} # define warnln_if(flag, fmt, ...) \ do { \ @@ -609,8 +629,6 @@ inline void warnln() { outln(stderr); } #endif -void vdbg(StringView fmtstr, TypeErasedFormatParams&, bool newline = false); - template void dbg(CheckedFormatString&& fmtstr, Parameters const&... parameters) {