Przekierowanie wyjścia konsoli do logu - aplikacja C# typu console na linuxie

0

Hejka,

Mam prostą usługę, która w zależności od określonego komunikatu wykonuje różne skrypty na systemie. Problem polega na tym, że nie jestem w stanie monitorować tego czy skrypt się zakończył sukcesem i ewentualne problemy nie są nigdzie logowane.

Oto kod:

        process.StartInfo.FileName = "/usr/bin/sudo";
        process.StartInfo.Arguments = "/opt/utils/test.sh";
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.RedirectStandardOutput = true;
        process.Start();
        StreamReader reader = process.StandardOutput;
        string output = reader.ReadToEnd();
        process.WaitForExit();
    
        Log.Information("Script executed: " + output);

W logu pojawia się tekst "Script executed: " i to wszystko. Co powinienem jeszcze zrobić, żeby zobaczyć efekt działania skryptu, który w tym przypadku wyświetla jakiś testowy ciąg znaków?

pozdro

KK

1

Masz rozne strumienie generalnie w Linuxie. Na C# sie nie znam, ale tak na intuicje to widze, ze przekierowujesz stdout, a logi zapewne leca na stderr

0

Hmm nie wiem czy nie powinieneś sie zapiąć do eventu OutputChanged i wtedy napisać sobie handler na zmianę który Ci będzie wyrzucał output procesu w trakcie jego dzialania.

1
stivens napisał(a):

Masz rozne strumienie generalnie w Linuxie. Na C# sie nie znam, ale tak na intuicje to widze, ze przekierowujesz stdout, a logi zapewne leca na stderr

A do tego masz process.ExitCode, który powie Ci, czy process zakończył się sukcesem, czy nie.

0

Jak wyżej, sprawdzaj ExitCode plus przekieruj jeszcze RedirectStandardError (stderr) bo na RedirectStandardOutput leci tylko standardowy output (stdout)

1 użytkowników online, w tym zalogowanych: 0, gości: 1