Я создал простой сценарий с использованием 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...");
Почему тестовый журнал «Запуск приложения ...» не добавляется в файл журнала?
AssemblyInfo
файле. Опубликовано как ответ ниже.Используйте эту страницу часто задаваемых вопросов : Часто задаваемые вопросы по Apache log4net
На 3/4 пути вниз рассказывается, как включить отладку log4net с помощью трассировки приложений. Это скажет вам, где ваша проблема.
Основы:
И вы видите след в стандартном выводе
источник
root
раздел ссылается на неправильный регистратор !!Как предложил @AndreasPaulsson, нам нужно его настроить. Я делаю конфигурацию в
AssemblyInfo
файле. Я уточняюconfiguration file name
здесь.источник
Также убедитесь, что для [log4net] .config выбрана опция «Копировать всегда».
источник
Убедитесь, что процесс (учетная запись), на котором работает сайт, имеет права на запись в выходной каталог.
В IIS 7 и более поздних версиях это настраивается в пуле приложений и обычно является идентификатором AppPool , который обычно не имеет разрешения на запись во все каталоги.
Проверьте свои журналы событий (приложение и безопасность), чтобы видеть, были ли выброшены какие-либо исключения.
источник
Вставка:
в конце файла AssemblyInfo.cs
источник
Для меня я переместил расположение файлов журнала, и только когда я изменил имя файла на что-то другое, он снова запустился.
Кажется, если уже существует лог-файл с таким именем, ничего не происходит.
После этого я переименовываю старый файл и снова изменяю имя файла журнала в конфиге на прежнее.
источник
В моем случае log4net не регистрировал должным образом из-за пробела в имени моего проекта. Понял меня, почему один и тот же код прекрасно работал в другом проекте, но не в новом. Пространства. Простое пространство.
Итак, остерегайтесь пробелов в именах проектов. Я усвоил свой урок.
источник
В моем случае мне пришлось дать
IIS_IUSRS
разрешение на чтение \ запись в файл журнала.источник
Убедитесь, что следующий код строки должен быть в файле AssemblyInfo.cs.
[сборка: log4net.Config.XmlConfigurator (ConfigFile = "Web.config", Watch = true)]
а также проверьте эту строку в методе Application_start ().
источник
Ваш конфигурационный файл кажется правильным. Затем вы должны зарегистрировать свой файл конфигурации Log4net в приложении. Таким образом, вы можете использовать следующий код:
После регистрации процесса, вы можете позвонить ниже определение для вызова журнала:
источник
Мне пришлось переместить Logger в пакет Nuget. Ниже код необходимо добавить в проект пакета NuGet.
См. Https://gurunadhduvvuru.wordpress.com/2020/04/30/log4net-issues-when-moved-it-to-a-nuget-package/ для получения более подробной информации.
источник
Есть несколько способов использовать log4net. Я нашел это полезным, когда я искал решение. Решение описано здесь: https://www.hemelix.com/log4net/
источник