C# - console app - log'owanie pracy do pliku

0

Napisałem program konsolowy który między innymi wywołuje git'a żeby ściągnąć i wypchnąć pliki. Chciałbym całą jego pracę log'ować do pliku.
Użyłem takiego rozwiązania:
https://forums.asp.net/t/2168236.aspx?How+do+I+show+and+save+my+console+output+in+textfile+as+well+as+show+in+command+prompt
jednakże to co się dzieje po wywołaniu git'a nie zostaje zapisane do pliku, a na tym mi najbardziej zależy żeby wiedzieć że np dany push wykonaj się bez problemu.
Jedyne co zostaje w log'u to np. info o git checkout:

"Your branch is ahead of 'origin/develop' by 2 commits.
(use "git push" to publish your local commits)"

Skoro wszystko się dzieje w obrębie jednej konsoli to chyba można to jakoś log'ować

1

Pokaż w jaki sposób uruchamiasz gita - jak przez Process.Start() to tam da się ustawić przekierowanie strumienia wyjścia uruchamianej aplikacji - RedirectStandardOutput o ile dobrze pamiętam.

BTW apostrofu używamy tylko jak odmieniane słowo obce kończy się samogłoską, np. George'a, ale już nie: Jamesa.

0

@Ktos: wywołuję tak:

        {
            projectPath = @"C:\KODY\" + projectPath;
            var startInfo = new System.Diagnostics.ProcessStartInfo
            {
                UseShellExecute = false,
                RedirectStandardOutput = true,
                FileName = "git.exe",
                Arguments = "pull " +repo+ " "+ branch,
                WorkingDirectory = projectPath,
            };

            var process = System.Diagnostics.Process.Start(startInfo);
            string output = process.StandardOutput.ReadToEnd();
            Console.WriteLine(output);
            process.WaitForExit();
            Console.WriteLine("Wykonano pull z " + repo+" z gałęzi "+ branch);
        }

Zastanawiam się jeszcze co w przypadku jakiegoś problemu z pull czy push, program stanie i będzie czekał na użytkownika :/

0

To dwie rzeczy - po pierwsze, użyj nie tylko RedirectStandardOutput, ale i RedirectStandardError, bo git w ten sposób pisze. Po drugie, git nie zapisze wszystkiego dokładnie tak jak w terminalu jeżeli nie ma podłączonego terminala - użyj parametru --progress.

https://askubuntu.com/questions/989015/how-to-get-git-producing-output-to-a-file

Zastanawiam się jeszcze co w przypadku jakiegoś problemu z pull czy push, program stanie i będzie czekał na użytkownika

Możesz wykryć w logach gita błędy i wtedy pokazać swojemu użytkownikowi jakiś komunikat :)

1

ile rzeczy może pójść nie tak przy równoległym czytaniu Standard Output/Error to ło Panie.

1

Może lepiej użyć jakiejś libki do obsługi gita? Jak np https://github.com/libgit2/libgit2sharp

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