为了移动几个产品的数据,我创建了一个使用Log4Net跟踪进度的C#控制台应用程序。 Log4Net在控制台应用App.Config文件中配置,目前有两个appender,一个ConsoleAppender和一个RollingLogFileAppender。使用Log4Net运行Windows应用程序的服务
<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>
此应用程序及其日志在独立运行时工作。现在为了自动运行这个控制台应用程序,我创建了Windows服务来运行控制台应用程序。该应用程序不需要任何用户输入,所以我在通过服务运行时预测到了任何问题。当服务运行成功时调用控制台应用程序,我可以看到它的工作结果,但是,日志记录似乎不起作用。被调用的可执行文件位置的日志没有更改,我在我的机器上的其他地方找不到另一个日志实例。该服务以LocalSystem身份运行,因此权限不应该成为问题。我曾尝试调用带以下设置的应用程序:
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;
,我曾尝试既没有输出重定向既不工作。任何建议,非常感谢。
你是如何设置配置的?它是在App.config中还是单独的文件? –
运行服务的帐户是否具有对日志存储位置的写入权限? – wimh
@RB。 Log4Net配置位于App.Config文件中。 –