Настройка Log4Net в веб-приложении


у меня есть этот код, и файл config ниже:

ILog log = LogManager.GetLogger(typeof(MyClass));
log.Debug("Testing");

TestProj каталог не создается и если я его создам, то нет , без регистрации ... ничего.

есть идеи?

спасибо,

файл config

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

<log4net debug="true">
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="C:TestProjTestLog.txt" />
  <appendToFile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
  </layout>
</appender>

<root>
  <level value="DEBUG" />
  <appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
5 56

5 ответов:

нужно позвонить

другой способ сделать это - добавить эту строку в информацию о сборке веб-приложения:

// Configure log4net using the .config file
[assembly: log4net.Config.XmlConfigurator(Watch = true)]

похоже на крик.

1: добавьте следующую строку в класс AssemblyInfo

[assembly: log4net.Config.XmlConfigurator(Watch = true)]

2: Убедитесь, что вы не используете .Net Framework 4 Client Profile как Target Framework (Я думаю, что это нормально на вашей стороне, потому что в противном случае он даже не будет компилироваться)

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

так, в журнале что-то во время запуска приложения в Глобальный.асакс

public class Global : System.Web.HttpApplication
{
    private static readonly log4net.ILog Log = log4net.LogManager.GetLogger(typeof(Global));
    protected void Application_Start(object sender, EventArgs e)
    {
        Log.Info("Startup application.");
    }
}

4: Убедитесь, что у вас есть разрешение на создание файлов и папок по указанному пути (если папки не существует)

5: остальная часть вашей информации выглядит нормально

часто это происходит из-за отсутствия разрешений. Учетная запись windows, с которой работает локальный пул приложений IIS, может не иметь разрешения на запись в каталог приложений. Вы можете создать каталог где-нибудь, дать всем разрешение на запись в него и указать свою конфигурацию log4net в этот каталог. Если затем там создается файл журнала, вы можете изменить разрешения для нужного каталога журнала, чтобы пул приложений мог записывать в него.

еще одна причина может быть неинициализированные такой как log4net. В приложении winforms обычно настраивается log4net при запуске приложения. В веб-приложении вы можете сделать это либо динамически (в своем компоненте ведения журнала проверьте, можно ли создать определенный регистратор Ilog, используя его имя, если нет -> call configure ()), либо снова при запуске приложения в глобальном режиме.асакс.цезий.

У меня также была аналогичная проблема. Журналы не создавались.

пожалуйста, проверьте имя атрибута logger должно совпадать с вашим LogManager.GetLogger("имя")

<logger name="Mylog">
      <level value="All"></level>
      <appender-ref ref="RollingLogFileAppender" />
    </logger>



private static readonly ILog Log = LogManager.GetLogger("Mylog");