2015-12-17 7 views
0

Я реализую службу Windows с log4net logger. Дело в том, что когда я отлаживаю службу, журнал создается, но после установки журнал не создается. Я использовал app.config файл и другой конфигурационный файл, чтобы добавить информацию о конфигурацииLog4net не создает файл журнала после установки службы Windows

Это мой app.config файл

<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> 
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> 
<!--Log file configuration--> 
<add key="log4net.Config" value="log4.config"/> 
<add key="log4net.Config.Watch" value="True"/> 
<add key="log4net.Internal.Debug" value="false"/> </appSettings> </configuration> 

и это еще один конфигурационный файл с именем log4.config

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
</configSections> 

<log4net> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="D:\applications\ActualSys\FujiOrder\log\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 [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="ALL" /> 
    <appender-ref ref="RollingFileAppender" /> 
</root> </log4net> </configuration> 

I я использую следующий способ создания сообщений журнала

private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); 

log.Info("Interface " + CODE + " - sendOrderThreadRoutine started!"); 

Это прекрасно работает, когда я деб ugging. Но это не работает после установки службы.

Я пробовал следующие фрагменты кода с AssemblyInfo.cs. Но вопрос не зафиксировал

[сборочные: log4net.Config.XmlConfigurator (Watch = истина)]

Когда я установить службу, ниже файлы находятся в папке установленного

  1. .exe файл
  2. .config файл
  3. log4net.dll

несмотря на то, что я могу видеть много примеров Ф.О. r файл журнала не создается на этапе отладки, я не мог найти статьи о той же проблеме на этапе установки.

+2

Устанавливаете ли вы службу на том же компьютере, на котором вы отлаживаете? Под какими учетными данными работает служба? Может быть проблема с разрешениями. – jeroenh

+0

Зачем нужен другой файл конфигурации? Вы пытались разместить их все в app.config? –

ответ

0

Start, позволяя log4net отладки в конфигурации:

<configuration> 
    <appSettings> 
     <add key="log4net.Internal.Debug" value="true"/> 
    </appSettings> 
</configuration> 

log4net faq

Перед началом регистрации, Вы должны вызвать log4net конфигурации. Потому что, когда вы работаете как служба, у вас есть другая точка входа, когда вы работаете в отладчике. Проверьте, действительно ли вы вызываете configure.

Другой проблемой может быть то, что при записи в каталог регистрации существует определенный вид доступа. Вы работаете как другой пользователь. Это будет в журналах отладки log4net. Или файл может быть заблокирован сеансом отладки.