using System.Runtime.CompilerServices; public static class ILoggerAssertionExtender { public static bool Assert(this ILogger logger, Func<bool> predicate, Func<string> message) { bool assertion = predicate(); if (!assertion) { logger.LogError("Code contract/assertion failed :" + message()); } // The assertion outcome is returned so the user can react to it (throw an exception, // insert a DebuggerBreak(), ...) after the logging is done. return assertion; } // This one adds Caller attributes to get more details public static bool CallerAssert(this ILogger logger, Func<bool> predicate, Func<string> message, [CallerMemberName] string member = "", [CallerFilePath] string file = "", [CallerLineNumber] int line = -1) { bool assertion = predicate(); if (!assertion) { logger.LogError($"Code contract/assertion failed in Member {member}, File {file}, Line {line}: " + message()); } // The assertion outcome is returned so the user can react to it (throw an exception, // insert a DebuggerBreak(), ...) after the logging is done. return assertion; } }
May 1, 2022
Logging Assertions in ASP .Net Core
Sometimes it useful to extend the logging system so that you can log assertions/code contracts.
Simple logger add-on so that assertions/code contracts can be logged in ASP.Net:
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment