diff --git a/pyanaconda/display.py b/pyanaconda/display.py index 9a6c31f60924..cae9502eefa5 100644 --- a/pyanaconda/display.py +++ b/pyanaconda/display.py @@ -45,6 +45,8 @@ from simpleline import App from simpleline.render.screen_handler import ScreenHandler +from systemd import journal + from pyanaconda.anaconda_loggers import get_module_logger, get_stdout_logger log = get_module_logger(__name__) stdout_log = get_stdout_logger() @@ -248,8 +250,15 @@ def wl_preexec(): if headless: argv.extend(["--headless"]) + # redirect stdout and stderr from GNOME Kiosk to journal + gnome_kiosk_stdout_stream = journal.stream("gnome-kiosk", priority=journal.LOG_INFO) + gnome_kiosk_stderr_stream = journal.stream("gnome-kiosk", priority=journal.LOG_ERR) + childproc = util.startProgram(argv, env_add={'XDG_DATA_DIRS': xdg_data_dirs}, - preexec_fn=wl_preexec) + preexec_fn=wl_preexec, + stdout=gnome_kiosk_stdout_stream, + stderr=gnome_kiosk_stderr_stream, + ) WatchProcesses.watch_process(childproc, argv[0]) for _i in range(0, int(timeout / 0.1)): diff --git a/pyanaconda/gnome_remote_destop.py b/pyanaconda/gnome_remote_destop.py index 68c540124c61..8cff8351397a 100644 --- a/pyanaconda/gnome_remote_destop.py +++ b/pyanaconda/gnome_remote_destop.py @@ -21,6 +21,8 @@ import sys import time import socket + +from systemd import journal from pyanaconda import network from pyanaconda.core import util from pyanaconda.core.util import execWithCapture, startProgram @@ -168,23 +170,17 @@ def _run_grdctl(self, argv): # make sure HOME is set to /root or else settings might not be saved execWithCapture("grdctl", combined_argv, env_add={"HOME": "/root"}) - def _open_grd_log_file(self): - # FIXME: redirect to journal ? - try: - fd = os.open(GRD_LOG_FILE, os.O_RDWR | os.O_CREAT) - except OSError as e: - sys.stderr.write("error opening %s: %s\n", (GRD_LOG_FILE, e)) - fd = None - - return fd - def _start_grd_process(self): """Start the GNOME remote desktop process.""" try: self.log.info("Starting GNOME remote desktop.") global grd_process + # forward GRD stdout & stderr to Journal + grd_stdout_stream = journal.stream("gnome-remote-desktop", priority=journal.LOG_INFO) + grd_stderr_stream = journal.stream("gnome-remote-desktop", priority=journal.LOG_ERR) grd_process = startProgram([GRD_BINARY_PATH, "--headless"], - stdout=self._open_grd_log_file(), + stdout=grd_stdout_stream, + stderr=grd_stderr_stream, env_add={"HOME": "/root"}) self.log.info("GNOME remote desktop is now running.") except OSError: diff --git a/scripts/run-in-new-session b/scripts/run-in-new-session index 80aa673eb37c..976630603580 100755 --- a/scripts/run-in-new-session +++ b/scripts/run-in-new-session @@ -28,6 +28,7 @@ import signal import struct import subprocess import sys +from systemd import journal VT_GETSTATE = 0x5603 VT_ACTIVATE = 0x5606 @@ -118,9 +119,12 @@ def run_program_in_new_session(arguments, pam_environment, user, service, print(f"Could not wait for VT {vt} to change: {e}", file=old_tty_output) try: + # redirect output (both stodout & stderr) from the command to Journal + new_session_stdout_stream = journal.stream("run-in-new-session", priority=journal.LOG_INFO) + new_session_stderr_stream = journal.stream("run-in-new-session", priority=journal.LOG_ERR) os.dup2(tty_input.fileno(), 0) - os.dup2(tty_output.fileno(), 1) - os.dup2(tty_output.fileno(), 2) + os.dup2(new_session_stdout_stream.fileno(), 1) + os.dup2(new_session_stderr_stream.fileno(), 2) except OSError as e: print(f"Could not set up standard i/o: {e}", file=old_tty_output)