2009-02-16 3 views
6

Мы пытаемся использовать Log4Net для регистрации из нашего приложения WCF, развернутого IIS 6. Мы пытаемся войти в файл, но не можем заставить файлы журнала создавать, не говоря уже о том, чтобы увидеть в них вывод журнала. Соответствующие части затраченных web.config являются:Не удается заставить Log4Net работать в нашем приложении WCF

<sectionGroup name="common"> 
    <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" /> 
</sectionGroup> 
... 
<common> 
    <logging> 
     <factoryAdapter type="Common.Logging.Simple.TraceLoggerFactoryAdapter, Common.Logging"> 
      <arg key="level" value="INFO" /> 
      <arg key="showLogName" value="true" /> 
      <arg key="showDataTime" value="true" /> 
      <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:fff" /> 
     </factoryAdapter> 
    </logging> 
</common> 

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <param name="File" value="c:\logs\ApplicationInfoTest.log" /> 
     <threshold value="INFO" /> 
     <param name="AppendToFile" value="true" /> 
     <param name="DatePattern" value="ddMMyyyy" /> 
     <param name="MaxSizeRollBackups" value="10" /> 
     <param name="MaximumFileSize" value="10MB" /> 
     <param name="RollingStyle" value="Size" /> 
     <param name="StaticLogFileName" value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
      <param name="Header" value="\r\n\r\n---------------------------------------------\r\n" /> 
      <param name="Footer" value="\r\n---------------------------------------------\r\n\r\n" /> 
      <param name="ConversionPattern" value="%d [%t] %-5p - %m%n" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="INFO" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 

С помощью этой конфигурации мы можем увидеть INFO каротаж уровня выхода из нашего приложения при использовании DebugView, но ясно, что это из части и не
шт.

Есть ли что-то, что мы не смогли установить в web.config? Это проблема с правами на создание каталога, который мы создали для записи журналов?

Просьба указать на нашу очевидную ошибку.

+1

@GeorgeStocker Как это дубликат, как это было 2 года до того, как другой? –

ответ

5

Используйте ProcessMonitor from SysInternals, чтобы узнать, где разрешения отказывают

(Потенциально можно определить ту же информацию, прилагая отладчик и захвата на исключениях, а не в Just My кодекс)

Вы уверены, что процесс, в котором работает служба, имеет разрешения на папку, которую вы пытаетесь записать?

+0

Привет, Рубен. Спасибо за ввод. Папка (пока, пока мы ее не получим) имеет разрешения «Полный доступ» для всех, пользователей ANONYMOUS LOGIN и Administrators. –

+0

Procmon - это человек, если есть какая-то путаница - это покажет вам, какой директор не сможет сделать то, что он хочет и где. Добавление пользователей admin не поможет. Обычно пулы приложений по умолчанию запускаются как сетевые службы. Но в этом случае вам гораздо лучше научиться ловить рыбу. –

+0

Я беру это из-за вашей проблемы, что вы определенно подключили инициализацию по мере того, как происходит обычное ведение журнала - вы должны сохранить два приложения, настроенных так, чтобы быть уверенным, что это все еще один, который не работает. –

8

Мне также пришлось добавить эту строку в файл AssemblyInfo.cs моего приложения, чтобы получить работу log4net.

// LOG 4 net config 
[assembly:log4net.Config.XmlConfigurator(Watch=true)] 
+0

Конечно, нормальный журнал не работал бы тогда - он доказал, что конфигурация не проблема? –

+0

Обратите внимание, что вам нужно указать эту строку в проекте/dll, где вы впервые используете log4net. Поэтому я обычно не рискую и просто добавляю его во все мои файлы assemblyInfo.cs. – Ruben

+0

, в каком проекте вам конкретно нужно добавить эту строку, поскольку у меня есть реализация моего сервиса в другом проекте, хост WCF в другом проекте и отдельный проект, где я выполняю ошибку. – chugh97

0

У вас есть раздел конфигурации, настроенный для log4net? Я не видел этого в вашем фрагменте кода

0

Я бы сначала запустил службу WCF в качестве консольного приложения - таким образом вы можете указать учетную запись пользователя для запуска приложения как и посмотреть, есть ли проблема с вашей конфигурацией или с проблемой разрешений, запускающей службу через IIS.

Если вы не уверены в том, как запустить службу как консольное приложение, посмотрите на http://www.jacopretorius.net/2009/08/running-windows-service-inside-console.html