2015-04-02 2 views
0

Я работаю в среде Dynamics CRM 2011on-помещения C# .Net. Это первый раз, когда я использовал log4net так медведь со мной, пожалуйста ...Почему log4net работает в среде IDE, но не на сервере?

Моя запись app.config для log4net является:

<log4net> 
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
    <file value="EDI File Generator Log.txt" /> 
    <appendToFile value="true" /> 
    <rollingStyle value="Size" /> 
    <maxSizeRollBackups value="10" /> 
    <maximumFileSize value="20MB" /> 
    <staticLogFileName value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%date [%thread] %level %logger - %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="INFO"/> 
    <appender-ref ref="RollingFileAppender"/> 
    <!--<appender-ref ref="ConsoleAppender" />--> 
</root> 

В программе я закодированы:

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

И по всей программе есть несколько мест, я называю это метод, который выполняет:

log.Info(sMessage); 

Когда я выполняю код из VS 2010, программа запускается и сообщения регистрируются в файле журнала. Когда я развернул программу на своем компьютере, программа запускается, но записи в журнале не записываются.

+0

Убедитесь, что в запуске CRM есть вызов метода 'Configure'. Также проверьте, что файл конфигурации содержит запись для CRM. – samy

+0

Спасибо, что ответили, Samy. Не могли бы Вы уточнить? Я подключаюсь к CRM без проблем. Это ошибка log4net. Я помещаю log.Info (String) в блок Try-Catch и не вызывается ошибка. Строка кода сразу после строки log.Info (все еще в блоке Try) выполняется, но записи журнала не записываются. – DeveloperM

+0

Log4net необходимо инициализировать при запуске приложения. Ваш CRM позволяет подключать метод запуска? Вы не забыли перенести конфигурацию log4net в файл CRM app.config? – samy

ответ

0

я понял это ...

Добавляя

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

в мой конфигурационный файл я был в состоянии видеть log4net внутренние сообщения. Это показало мне, что log4net не смог найти файл app.config. Развернутое имя конфигурационного файла - MyProgram.exe.config. Таким образом, я переместил декларативный Assembly из класса кода в AssemblyInfo.cs и удалить указатель на App.config, оставив

[assembly: log4net.Config.XmlConfigurator] 

Это работало как в IDE и при развертывании на моей машине.

Смежные вопросы