allow logger daemon process to be killed with the main thread, thus allowing us to continue logging during shutdown

This commit is contained in:
Jason Hunter 2021-05-05 21:20:44 -04:00 committed by Blake Blackshear
parent 3a171d19e3
commit 482399d82f
3 changed files with 7 additions and 13 deletions

View File

@ -1,10 +1,8 @@
{ {
"name": "Frigate Dev", "name": "Frigate Dev",
"context": "..",
"dockerComposeFile": "../docker-compose.yml", "dockerComposeFile": "../docker-compose.yml",
"service": "dev", "service": "dev",
"workspaceFolder": "/opt/frigate", "workspaceFolder": "/opt/frigate",
"shutdownAction": "stopCompose",
"extensions": [ "extensions": [
"ms-python.python", "ms-python.python",
"visualstudioexptteam.vscodeintellicode", "visualstudioexptteam.vscodeintellicode",

View File

@ -14,6 +14,10 @@ services:
- .:/opt/frigate:cached - .:/opt/frigate:cached
- ./config/config.yml:/config/config.yml:ro - ./config/config.yml:/config/config.yml:ro
- ./debug:/media/frigate - ./debug:/media/frigate
- type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear
target: /tmp/cache
tmpfs:
size: 1000000000
ports: ports:
- "1935:1935" - "1935:1935"
- "5000:5000" - "5000:5000"

View File

@ -13,7 +13,9 @@ from collections import deque
def listener_configurer(): def listener_configurer():
root = logging.getLogger() root = logging.getLogger()
console_handler = logging.StreamHandler() console_handler = logging.StreamHandler()
formatter = logging.Formatter("%(name)-30s %(levelname)-8s: %(message)s") formatter = logging.Formatter(
"[%(asctime)s] %(name)-30s %(levelname)-8s: %(message)s", "%Y-%m-%d %H:%M:%S"
)
console_handler.setFormatter(formatter) console_handler.setFormatter(formatter)
root.addHandler(console_handler) root.addHandler(console_handler)
root.setLevel(logging.INFO) root.setLevel(logging.INFO)
@ -27,20 +29,10 @@ def root_configurer(queue):
def log_process(log_queue): def log_process(log_queue):
stop_event = mp.Event()
def receiveSignal(signalNumber, frame):
stop_event.set()
signal.signal(signal.SIGTERM, receiveSignal)
signal.signal(signal.SIGINT, receiveSignal)
threading.current_thread().name = f"logger" threading.current_thread().name = f"logger"
setproctitle("frigate.logger") setproctitle("frigate.logger")
listener_configurer() listener_configurer()
while True: while True:
if stop_event.is_set() and log_queue.empty():
break
try: try:
record = log_queue.get(timeout=5) record = log_queue.get(timeout=5)
except queue.Empty: except queue.Empty: