Log4net не создает файл журнала

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

В этом конфигурационном файле что-то не так, или кто-то испытал подобную проблему и знает что-то, что я должен искать в программе, с которой я пытаюсь получить журнал?

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="AutoTag" type="System.Configuration.NameValueSectionHandler"/>
    <section name="WindwardReports" type="System.Configuration.NameValueSectionHandler"/>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821"/>
  </configSections>

  <AutoTag>
    <add key="_debug" value="true"/>
  </AutoTag>

  <WindwardReports>
    <add key="line.break" value="internal"/>
  </WindwardReports>

  <appSettings>
    <add key="sql.timeout" value="240"/>
  </appSettings>

  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">

      <param name="File" value="C:\Users\loganm\Documents\Catapult.log"/>

      <param name="AppendToFile" value="true"/>
      <param name="MaxSizeRollBackups" value="2"/>
      <param name="MaximumFileSize" value="100KB"/>
      <param name="RollingStyle" value="Size"/>
      <param name="StaticLogFileName" value="true"/>
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/>
      </layout>
    </appender>

    <root>
      <level value="DEBUG"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
  </log4net>
</configuration>

Ответы

Ответ 1

Перед тем, как поместить свой код ведения журнала, введите следующий код:

log4net.Config.XmlConfigurator.Configure();

Вы можете определить его в Global.asax:

void Application_Start(object sender, EventArgs e) 
{
    // Code that runs on application startup

    // Initialize log4net.
    log4net.Config.XmlConfigurator.Configure();
}

Вы также можете добавить следующую строку, как рекомендовал Кевин (упоминание вашего имени файла конфигурации или нет):

[assembly: log4net.Config.XmlConfigurator]

или

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "Web.config", Watch = true)]

Надеюсь, это поможет!!!

Ответ 2

Вот некоторые возможные вещи:

  • Возможно, вы используете другую версию log4net DLL, чем ваши коллеги? Попробуйте удалить информацию о версии и открытом ключе из раздела конфигурации, то есть укоротить ее до:

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
    
  • Попробуйте изменить имя файла, чтобы использовать скрытые обратные косые черты, то есть "C:\\Users\\loganm \...". Кроме того, вы можете попробовать использовать косые черты: "C:/Users/loganm/..."

  • Если вы перестроили программу перед ее запуском, убедитесь, что вы фактически используете тот же AssemblyInfo.cs, что и ваши коллеги. Одна из распространенных ошибок заключается в том, чтобы пренебречь инициализацией регистратора там. Он должен иметь что-то вроде этого внизу:

    //Активация Log4Net
    [сборка: log4net.Config.XmlConfigurator]

Ответ 3

убедитесь, что файл log4net.config, свойство Copy to Output Directory не является "Не копировать".

На самом деле лучшим решением является добавление

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

чтобы отслеживать, что происходит на обратной стороне. Это поможет вам обнаружить проблему.

Ответ 4

Я нашел проблему, и, к сожалению, именно в этой программе регистрация не была установлена ​​в программе, и мне была предоставлена ​​некорректная информация.