Make logging code self-contained (#13785)

* Make logging code self-contained.

Rewrite logging code to use python's builting QueueListener, effectively
moving the logging process into a thread of the Frigate app.

Also, wrap this behaviour in a easy-to-use context manager to encourage
some consistency.

* Fixed typing errors

* Remove todo note from log filter

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>

* Do not access log record's msg directly

* Clear all root handlers before starting app

---------

Co-authored-by: Nicolas Mowen <nickmowen213@gmail.com>
This commit is contained in:
gtsiam
2024-09-17 16:26:25 +03:00
committed by GitHub
parent f7eaace7ae
commit 1c24f0054a
4 changed files with 67 additions and 72 deletions

View File

@@ -1,17 +1,28 @@
import faulthandler
import logging
import threading
from flask import cli
from frigate.app import FrigateApp
faulthandler.enable()
threading.current_thread().name = "frigate"
def main() -> None:
faulthandler.enable()
# Clear all existing handlers.
logging.basicConfig(
level=logging.INFO,
handlers=[],
force=True,
)
threading.current_thread().name = "frigate"
cli.show_server_banner = lambda *x: None
# Run the main application.
FrigateApp().start()
cli.show_server_banner = lambda *x: None
if __name__ == "__main__":
frigate_app = FrigateApp()
frigate_app.start()
main()