Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Log4Net运行应用程序的Windows服务_C#_Windows Services_Console Application_Log4net - Fatal编程技术网

C# 使用Log4Net运行应用程序的Windows服务

C# 使用Log4Net运行应用程序的Windows服务,c#,windows-services,console-application,log4net,C#,Windows Services,Console Application,Log4net,为了移动一些产品的数据,我创建了一个C#控制台应用程序,它使用Log4Net跟踪进度。Log4Net在console apps App.Config文件中配置,目前有两个appender,一个是ConsoleAppender,一个是RollingLogFileAppender <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="lo

为了移动一些产品的数据,我创建了一个C#控制台应用程序,它使用Log4Net跟踪进度。Log4Net在console apps App.Config文件中配置,目前有两个appender,一个是ConsoleAppender,一个是RollingLogFileAppender

<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>

我尝试过使用和不使用输出重定向,但都不起作用。非常感谢您的建议。

您的可执行文件可能不会在您放置的位置执行。我已经在system32文件夹中的某个地方执行了我的应用程序

请尝试指定日志文件的绝对路径而不是相对路径,以查看这是否解决了问题


有关类似问题,请参阅。

您的可执行文件可能不会在放置它的位置执行。我已经在system32文件夹中的某个地方执行了我的应用程序

请尝试指定日志文件的绝对路径而不是相对路径,以查看这是否解决了问题


有关类似问题,请参阅。

您可能需要查看以下内容,以验证您的App.config是否已被Windows服务读取

答案的相关部分如下:


如果找不到相应的.exe.config文件,则服务中的代码可能会返回默认值。在这种情况下,您可以在服务可执行文件旁边放置一个正确命名和格式的配置文件,然后重新启动服务,一切正常

您可能需要查看以下内容,以验证您的App.config是否已被Windows服务读取

答案的相关部分如下:


如果找不到相应的.exe.config文件,则服务中的代码可能会返回默认值。在这种情况下,您可以在服务可执行文件旁边放置一个正确命名和格式的配置文件,然后重新启动服务,一切正常

您是如何设置配置的?它是在App.config中还是在一个单独的文件中?运行服务的帐户是否对日志存储位置具有写入权限?@RB。Log4Net配置在App.Config文件中。@Wimmel我以LocalSystem的形式运行服务,因此它应该对该文件夹具有权限。使用SysInternals“Process Monitor”查看对以“logs\log.txt”结尾的路径进行的任何访问-这将快速突出显示(a)日志文件的位置(如果有)和(b)任何权限问题或类似问题,您如何设置配置?它是在App.config中还是在一个单独的文件中?运行服务的帐户是否对日志存储位置具有写入权限?@RB。Log4Net配置在App.Config文件中。@Wimmel我以LocalSystem的形式运行服务,因此它应该对该文件夹具有权限。使用SysInternals“Process Monitor”查看对以“logs\log.txt”结尾的路径进行的任何访问-这将快速突出显示(a)日志文件的位置(如果有)和(b)任何权限问题或类似问题,我最近都没有检查,但windows/system32始终是服务进程的默认当前文件夹,因此是的,请将完整路径添加到日志文件。我将日志文件路径更改为绝对路径,并添加了
目录.SetCurrentDirectory
。Log4Net现在正在正确记录日志。仅仅将路径更改为绝对路径不起作用。谢谢我最近没有检查,但windows/system32始终是服务进程的默认当前文件夹,因此是的,请将完整路径添加到日志文件。我将日志文件路径更改为绝对路径,并添加了
目录。SetCurrentDirectory
。Log4Net现在正在正确记录日志。仅仅将路径更改为绝对路径不起作用。谢谢
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;