Log4net не пишет файл журнала - PullRequest
       12

Log4net не пишет файл журнала

149 голосов
/ 01 сентября 2010

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

Я добавил следующее в файл web.config:

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

<log4net>
    <appender name="LogFileAppender" type="log4net.Appender.FileAppender">
            <file value="D:\MyData\Desktop\LogFile.txt" />
            <appendToFile value="true" />
            <encoding value="utf-8" />
            <layout type="log4net.Layout.SimpleLayout" />
    </appender>


    <root>
        <level value="INFO" />
        <appender-ref ref="LogFileAppender" />
    </root>
</log4net>

В глобальном файле ASAX я добавил:

ILog logger = LogManager.GetLogger(typeof(MvcApplication));

и в методе Application_Start:

logger.Info("Starting the application...");

Что я сделал не так?

Ответы [ 8 ]

296 голосов
/ 02 сентября 2010

Вы звоните

log4net.Config.XmlConfigurator.Configure();

где-нибудь, чтобы log4net прочитал вашу конфигурацию? Например. в Global.asax:

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

    // Initialize log4net.
    log4net.Config.XmlConfigurator.Configure();
}
45 голосов
/ 01 сентября 2010

Используйте эту страницу часто задаваемых вопросов: Часто задаваемые вопросы по Apache log4net

Примерно на 3/4 пути вниз рассказывается, как включить отладку log4net с помощью трассировки приложений.Это скажет вам, где ваша проблема.

Основы:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>
</configuration>

И вы увидите след в стандартном выводе

32 голосов
/ 04 февраля 2013

Как подсказал @AndreasPaulsson, нам нужно его настроить.Я делаю конфигурацию в AssemblyInfo файле.Я указываю configuration file name здесь.

// Log4Net Configuration.
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
25 голосов
/ 19 августа 2015

Кроме того, убедитесь, что для [log4net] выбрана опция «Копировать всегда» , например:

enter image description here

22 голосов
/ 01 сентября 2010

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

В IIS 7 и более поздних версиях он настроен для пула приложений и обычно представляет собой AppPool Identity , который обычно не имеет разрешения на запись во все каталоги.

Проверьте свои журналы событий (приложение и безопасность), чтобы увидеть, были ли выброшены какие-либо исключения.

18 голосов
/ 08 сентября 2015

Вставка:

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

в конце AssemblyInfo.cs file

1 голос
/ 10 апреля 2017

Для меня я переместил расположение лог-файлов, и только когда я изменил имя файла на другое, он снова запустился.

Кажется, если уже существует лог-файл с тем же именем, уже существующий, ничего не происходит.

После этого я переименовываю старый файл и снова изменяю имя файла журнала в конфиге на прежнее.

1 голос
/ 19 августа 2016

В моем случае log4net не регистрировал должным образом из-за пробела в имени моего проекта.Понял меня, почему один и тот же код прекрасно работает в другом проекте, но не работает в новом.Пространства.Простой пробел.

Итак, остерегайтесь пробелов в именах проектов.Я усвоил урок.

...