私はlog4netをWindowsサービスで動かそうとしています。コンソールアプリケーションでうまく動作します。Log4net with Windowsサービス
空のサービスを作成しました。唯一行うべきことは、ログステートメントをファイルに書き出すことです。
これは私の主な方法です。
log4net.Config.XmlConfigurator.Configure();
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));
log.Info("Test");
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
これは私のapp.configファイルです:私が読んだすべてのものによると
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
:
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="Test.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
</configuration>
私もAssemblyInfo.csファイルに次の行を追加しましたこれは、サービスがインストールされているディレクトリにログファイルを作成するのに十分なはずです。これは実現しなかったとき、私はどちらか動作しませんでした
log4net.Config.XmlConfigurator.Configure(new FileInfo("C:\\Users\\Public\\app.config"));
と
<file value="C:\Users\Public\Test.log" />
このよう絶対ディレクトリを入れてみました。潜在的に制限されたアカウントの下でサービスが実行されているので、おそらくそれはいくつかの狂気のアクセス許可の問題だと思ったが、私はちょうど管理者としてそれを実行しようとし、ファイルがまだ作成されていません。
私はここで間違っていますか?