Я пытаюсь заставить log4net работать для службы Windows.Он отлично работает для консольного приложения.
Я создал пустой сервис, и единственное, что он должен сделать, это записать в файл инструкцию log.
Это мой основной метод.
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:
<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:
[assembly: log4net.Config.XmlConfigurator(Watch = true)]
Согласнодля всего, что я читал в Интернете, этого должно быть достаточно, чтобы создать файл журнала в каталоге, откуда установлена служба.Когда этого не произошло, я попытался поместить абсолютные каталоги как
log4net.Config.XmlConfigurator.Configure(new FileInfo("C:\\Users\\Public\\app.config"));
и
<file value="C:\Users\Public\Test.log" />
Это тоже не сработало.Я подумал, может быть, это какая-то сумасшедшая проблема с разрешениями, поскольку служба работает под потенциально ограниченной учетной записью, но я только что попытался запустить ее как администратор, а файл все еще не создан.
Что я делаю неправильноздесь