{"record":{"id":"d4783c0c217d6db4","repo":"apereo/cas","slug":"out-warn-ascii-art-logger-marker-message","errorCode":null,"errorMessage":"out.warn(ASCII_ART_LOGGER_MARKER, message)","messagePattern":"out\\.warn\\(ASCII_ART_LOGGER_MARKER, message\\)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/AsciiArtUtils.java","lineNumber":62,"sourceCode":"        }\n        out.println(ANSI_RESET);\n    }\n    \n    /**\n     * Print ascii art.\n     *\n     * @param out        the out\n     * @param additional the additional\n     */\n    public static void printAsciiArtWarning(final Logger out, final String additional) {\n        val ascii = \"\"\"\n             ____  ____  __  ____\\s\n            / ___)(_  _)/  \\\\(  _ \\\\\n            \\\\___ \\\\  )( (  O )) __/\n            (____/ (__) \\\\__/(__) \\s\n            \"\"\";\n        val message = ANSI_BOLD + \"\\n\\n\".concat(ascii).concat(additional) + ANSI_RESET;\n        out.warn(ASCII_ART_LOGGER_MARKER, message);\n    }\n\n    /**\n     * Print ascii art info.\n     *\n     * @param out        the out\n     * @param additional the additional\n     */\n    public static void printAsciiArtReady(final Logger out, final String additional) {\n        val ascii = \"\"\"\n             ____  ____   __   ____  _  _\\s\n            (  _ \\\\(  __) / _\\\\ (    \\\\( \\\\/ )\n             )   / ) _) /    \\\\ ) D ( )  /\\s\n            (__\\\\_)(____)\\\\_/\\\\_/(____/(__/ \\s\n            \"\"\";\n        val message = ANSI_BOLD + \"\\n\\n\".concat(ascii).concat(additional).concat(\"\\n\") + ANSI_RESET;\n        out.info(ASCII_ART_LOGGER_MARKER, message);\n    }","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/apereo/cas/blob/e7288fc434b4f4505b8452e1a57e8fb3111bb863/core/cas-server-core-util-api/src/main/java/org/apereo/cas/util/AsciiArtUtils.java#L44-L80","documentation":"AsciiArtUtils.printAsciiArtWarning renders an ASCII-art banner (with any additional text) at WARN level through the supplied logger. This is not a failure: it is a deliberate, visually loud warning used during startup (e.g. deprecated settings, insecure configuration). The message is the banner itself, so log scrapers will see the art rather than a normal sentence.","triggerScenarios":"Any CAS startup/configuration code calling AsciiArtUtils.printAsciiArtWarning(...) to surface a critical operator-facing notice, e.g. insecure or deprecated configuration detected at boot.","commonSituations":"First boot after an upgrade where CAS flags deprecated settings; running with development/insecure defaults; log aggregation systems flagging multi-line ASCII output as anomalies or truncating it.","solutions":["Read the additional text accompanying the banner and act on the underlying configuration issue it announces","Fix the flagged configuration so the banner no longer prints on startup","If only the noise is the problem, adjust logger levels for ASCII_ART_LOGGER_MARKER while still fixing the underlying issue"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Read the additional text next to the banner at every startup; it flags real configuration problems","Configure multi-line log handling in your aggregator so ASCII banners are not truncated or misparsed","Treat the banner as a release/upgrade checklist item and fix its cause before production"],"tags":["logging","startup","ascii-art","warning-banner"],"backgroundTag":"startup-warning-banner","analyzedSha":"e7288fc434b4f4505b8452e1a57e8fb3111bb863","analyzedAt":"2026-09-08T15:39:16.015Z","contentChangedAt":"2026-09-08T15:39:16.015Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}