# rich v15.0.0 rich/logging.py RichHandler and rich/_log_render.py LogRender: a grid of the time, the level
# padded to 8, the message and the caller's file:line. A time equal to the row before prints as spaces.
# captured: rich 15.0.0 at width 100, with the default "[%x %X]" and the documented "[%X]"
[10/21/26 17:16:04] DEBUG    debug message                                           rich_demo.py:13 ⇒ {"rule": "rich", "level": "debug", "name": "", "message": "debug message", "file": "rich_demo.py", "line": 13}
                    INFO     info message                                            rich_demo.py:13 ⇒ {"rule": "rich", "level": "info", "name": "", "message": "info message", "file": "rich_demo.py", "line": 13}
                    WARNING  warning message                                         rich_demo.py:13 ⇒ {"rule": "rich", "level": "warn", "name": "", "message": "warning message", "file": "rich_demo.py", "line": 13}
                    ERROR    error message                                           rich_demo.py:13 ⇒ {"rule": "rich", "level": "error", "name": "", "message": "error message", "file": "rich_demo.py", "line": 13}
                    CRITICAL critical message                                        rich_demo.py:13 ⇒ {"rule": "rich", "level": "critical", "name": "", "message": "critical message", "file": "rich_demo.py", "line": 13}
                    INFO     two                                                     rich_demo.py:14 ⇒ {"rule": "rich", "level": "info", "name": "", "message": "two", "file": "rich_demo.py", "line": 14}
[17:16:04] DEBUG    debug message                                                    rich_demo.py:13 ⇒ {"rule": "rich", "level": "debug", "name": "", "message": "debug message", "file": "rich_demo.py", "line": 13}
           INFO     info message                                                     rich_demo.py:13 ⇒ {"rule": "rich", "level": "info", "name": "", "message": "info message", "file": "rich_demo.py", "line": 13}
           WARNING  warning message                                                  rich_demo.py:13 ⇒ {"rule": "rich", "level": "warn", "name": "", "message": "warning message", "file": "rich_demo.py", "line": 13}
           ERROR    error message                                                    rich_demo.py:13 ⇒ {"rule": "rich", "level": "error", "name": "", "message": "error message", "file": "rich_demo.py", "line": 13}
           CRITICAL critical message                                                 rich_demo.py:13 ⇒ {"rule": "rich", "level": "critical", "name": "", "message": "critical message", "file": "rich_demo.py", "line": 13}
# with logging's BASIC_FORMAT as the handler's format, the message column repeats the level and name
[10/21/26 17:16:04] DEBUG    DEBUG:app.db:debug message                              rich_demo.py:13 ⇒ {"rule": "rich", "level": "debug", "name": "", "message": "DEBUG:app.db:debug message", "file": "rich_demo.py", "line": 13}
                    WARNING  WARNING:app.db:warning message                          rich_demo.py:13 ⇒ {"rule": "rich", "level": "warn", "name": "", "message": "WARNING:app.db:warning message", "file": "rich_demo.py", "line": 13}
# show_time=False, a message with spaces inside, and a line number of four digits
# constructed DEBUG    starting pump                                                           pump.py:1024 ⇒ {"rule": "rich", "level": "debug", "name": "", "message": "starting pump", "file": "pump.py", "line": 1024}
# constructed [17:16:04] INFO     rail  is  steady                                            pump_ctl.py:7 ⇒ {"rule": "rich", "level": "info", "name": "", "message": "rail  is  steady", "file": "pump_ctl.py", "line": 7}
# constructed [17:16:04] INFO     rail=13.65V                                                 pump.py:7 ⇒ {"rule": "rich+kv", "level": "info", "name": "", "message": "rail=13.65V", "values": [["rail", 13.65, "V"]]}
# a wrapped message's next row, other layouts, and lines that only look like it
                    line message                                                                     ⇒ {"rule": "plain", "level": "info", "leveled": false, "message": "                    line message                                                                    "}
# constructed [17:16:04] DEBUG    no path column ⇒ {"rule": "layout", "level": "debug", "message": "no path column"}
# constructed [17:16:04] DEBUG    a C file                                                     pump.c:13 ⇒ {"rule": "layout", "level": "debug", "message": "a C file                                                     pump.c:13"}
# constructed [17:16:04] debug    lower case                                                   pump.py:13 ⇒ {"rule": "plain", "level": "info", "leveled": false, "message": "[17:16:04] debug    lower case                                                   pump.py:13"}
# constructed [17:16:04] VERBOSE  not a logging level                                          pump.py:13 ⇒ {"rule": "layout", "level": "trace", "message": "not a logging level                                          pump.py:13"}
# constructed     INFO     indented text that ends without a path ⇒ {"rule": "plain", "level": "info", "leveled": false, "message": "    INFO     indented text that ends without a path"}
# constructed the INFO     column says pump.py:13 ⇒ {"rule": "plain", "level": "info", "leveled": false, "message": "the INFO     column says pump.py:13"}
# constructed DEBUG:app.db:debug message ⇒ {"rule": "python", "level": "debug", "name": "app.db", "message": "debug message"}
# constructed INFO     app.db info message ⇒ {"rule": "level-word", "level": "info", "message": "app.db info message"}
# constructed 2026-10-21 17:16:04 INFO     a stamp out of brackets                   pump.py:13 ⇒ {"rule": "layout", "level": "info", "message": "a stamp out of brackets                   pump.py:13"}
# constructed [17:16:04] INFO     pump.py:13 ⇒ {"rule": "rich", "level": "info", "name": "", "message": "", "file": "pump.py", "line": 13}
