Fix: Logs visibles en consola Docker y ruta correcta /app/data/logs para volumen persistente (#8)
This commit is contained in:
@@ -37,13 +37,29 @@ def start_process(cmd, name, delay_before=0):
|
||||
log(f"✅ Iniciando {name}...")
|
||||
|
||||
log_path = f"{LOG_DIR}/{name.lower().replace(' ', '_')}.log"
|
||||
with open(log_path, "a") as f:
|
||||
p = subprocess.Popen(
|
||||
cmd,
|
||||
stdout=f,
|
||||
stderr=subprocess.STDOUT,
|
||||
preexec_fn=os.setsid
|
||||
)
|
||||
log_fd = open(log_path, "a")
|
||||
|
||||
# stdout va al archivo Y a la consola del contenedor (Docker logs)
|
||||
p = subprocess.Popen(
|
||||
cmd,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
preexec_fn=os.setsid
|
||||
)
|
||||
|
||||
# Hilo que redirige la salida del proceso al archivo + consola
|
||||
import threading
|
||||
def tee_output(proc, fd, label):
|
||||
for line in iter(proc.stdout.readline, b''):
|
||||
decoded = line.decode("utf-8", errors="replace")
|
||||
fd.write(decoded)
|
||||
fd.flush()
|
||||
print(f"[{label}] {decoded}", end="", flush=True)
|
||||
fd.close()
|
||||
|
||||
t = threading.Thread(target=tee_output, args=(p, log_fd, name), daemon=True)
|
||||
t.start()
|
||||
|
||||
processes.append((p, name))
|
||||
return p
|
||||
|
||||
|
||||
Reference in New Issue
Block a user