Um Daten für ein paar Produkte zu verschieben, habe ich eine C# -Konsolenanwendung erstellt, die Log4Net verwendet, um den Fortschritt zu verfolgen. Log4Net wird in der App.Config-Datei der Konsolen-App konfiguriert und verfügt derzeit über zwei Appender, einen ConsoleAppender und einen RollingLogFileAppender.Windows-Dienst läuft mit Log4Net
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\Log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger %method - %message%newline%exception" />
</layout>
</appender>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger %method - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingLogFileAppender" />
<appender-ref ref="ConsoleAppender" />
</root>
Diese Anwendung und ihre Protokollierung funktionieren, wenn sie eigenständig ausgeführt werden. Jetzt, um die Ausführung dieser Konsolen-App zu automatisieren, erstelle ich Windows-Dienst, um die Konsolen-App auszuführen. Die Anwendung erfordert keine Benutzereingaben, daher habe ich Probleme beim Ausführen des Dienstes vorhergesagt. Wenn der Dienst erfolgreich ausgeführt wird, ruft er die Konsolenanwendung auf, und ich kann die Ergebnisse seiner Arbeit sehen, aber die Protokollierung scheint nicht zu funktionieren. Die Protokolle am Speicherort der ausführbaren Datei ändern sich nicht und ich kann keine andere Instanz des Protokolls an anderer Stelle auf meinem Computer finden. Der Dienst wird als LocalSystem ausgeführt, sodass Berechtigungen kein Problem darstellen sollten. Ich habe versucht, die Anwendung mit den folgenden Einstellungen Aufruf:
ProcessStartInfo processStartInfo = new ProcessStartInfo(@"C:\Constellation\Dev\Caelum\Caelum\bin\Debug\Caelum.exe");
processStartInfo.WindowStyle = ProcessWindowStyle.Hidden;
processStartInfo.CreateNoWindow = true;
processStartInfo.UseShellExecute = false;
processStartInfo.RedirectStandardError = true;
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
Ich habe versucht, sowohl mit als auch ohne die Ausgabe Umleitungen und weder gearbeitet. Irgendwelche Vorschläge werden sehr geschätzt.
Wie haben Sie die Konfiguration eingerichtet? Ist es in der App.config oder einer separaten Datei? –
Hat das Konto, unter dem der Dienst ausgeführt wird, Schreibberechtigungen für den Speicherort der Protokolle? – wimh
@RB. Die Log4Net-Konfiguration befindet sich in der App.Config-Datei. –