log4net dll что это
Устранение проблем DLL с Log4net.dll — как скачать и исправить
Последнее обновление: 06/30/2021 [Время, требуемое для чтения: 3,5 мин.]
Файл log4net.dll впервые был выпущен в ОС Windows 10 10/07/2019 с System Mechanic Free 19.5.0.1 (Final). Последней версией файла для Evernote 6.18.4.8489 является v1.2.13.0, выпущенная 05/08/2019.
Ниже приведены подробные сведения о файле, порядок устранения неполадок, возникших с файлом DLL, и бесплатные загрузки некоторых версий файла log4net.dll.
Рекомендуемая загрузка: исправить ошибки реестра в WinThruster, связанные с log4net.dll и (или) Evernote.
Совместимость с Windows 10, 8, 7, Vista, XP и 2000
Средняя оценка пользователей
Обзор файла
Сведения о разработчике и ПО | |
---|---|
Разработчик ПО: | The Apache Software Foundation |
Программа: | log4net |
Авторское право: | Copyright 2004-2013 The Apache Software Foundation. |
Сведения о файле | |
---|---|
Набор символов: | Unicode |
Код языка: | Neutral |
Флаги файлов: | (none) |
Маска флагов файлов: | 0x003f |
Точка входа: | 0x4a3ce |
Размер кода: | 299008 |
Версия сборки: | 1.2.13.0 |
✻ Фрагменты данных файлов предоставлены участником Exiftool (Phil Harvey) и распространяются под лицензией Perl Artistic.
Что такое сообщения об ошибках log4net.dll?
Ошибки библиотеки динамической компоновки log4net.dll
Файл log4net.dll считается разновидностью DLL-файла. DLL-файлы, такие как log4net.dll, по сути являются справочником, хранящим информацию и инструкции для исполняемых файлов (EXE-файлов), например MpSigStub.exe. Данные файлы были созданы для того, чтобы различные программы (например, Evernote) имели общий доступ к файлу log4net.dll для более эффективного распределения памяти, что в свою очередь способствует повышению быстродействия компьютера.
К сожалению, то, что делает файлы DLL настолько удобными и эффективными, также делает их крайне уязвимыми к различного рода проблемам. Если что-то происходит с общим файлом DLL, то он либо пропадает, либо каким-то образом повреждается, вследствие чего может возникать сообщение об ошибке выполнения. Термин «выполнение» говорит сам за себя; имеется в виду, что данные ошибки возникают в момент, когда происходит попытка загрузки файла log4net.dll — либо при запуске приложения Evernote, либо, в некоторых случаях, во время его работы. К числу наиболее распространенных ошибок log4net.dll относятся:
Файл log4net.dll может отсутствовать из-за случайного удаления, быть удаленным другой программой как общий файл (общий с Evernote) или быть удаленным в результате заражения вредоносным программным обеспечением. Кроме того, повреждение файла log4net.dll может быть вызвано отключением питания при загрузке Evernote, сбоем системы при загрузке log4net.dll, наличием плохих секторов на запоминающем устройстве (обычно это основной жесткий диск) или, как нередко бывает, заражением вредоносным программным обеспечением. Таким образом, крайне важно, чтобы антивирус постоянно поддерживался в актуальном состоянии и регулярно проводил сканирование системы.
Как исправить ошибки log4net.dll — 3-шаговое руководство (время выполнения:
Если вы столкнулись с одним из вышеуказанных сообщений об ошибке, выполните следующие действия по устранению неполадок, чтобы решить проблему log4net.dll. Эти шаги по устранению неполадок перечислены в рекомендуемом порядке выполнения.
Шаг 1. Восстановите компьютер до последней точки восстановления, «моментального снимка» или образа резервной копии, которые предшествуют появлению ошибки.
Чтобы начать восстановление системы (Windows XP, Vista, 7, 8 и 10):
Если на этапе 1 не удается устранить ошибку log4net.dll, перейдите к шагу 2 ниже.
Шаг 2. Если вы недавно установили приложение Evernote (или схожее программное обеспечение), удалите его, затем попробуйте переустановить Evernote.
Чтобы удалить программное обеспечение Evernote, выполните следующие инструкции (Windows XP, Vista, 7, 8 и 10):
После полного удаления приложения следует перезагрузить ПК и заново установить Evernote.
Если на этапе 2 также не удается устранить ошибку log4net.dll, перейдите к шагу 3 ниже.
Шаг 3. Выполните обновление Windows.
Когда первые два шага не устранили проблему, целесообразно запустить Центр обновления Windows. Во многих случаях возникновение сообщений об ошибках log4net.dll может быть вызвано устаревшей операционной системой Windows. Чтобы запустить Центр обновления Windows, выполните следующие простые шаги:
Если Центр обновления Windows не смог устранить сообщение об ошибке log4net.dll, перейдите к следующему шагу. Обратите внимание, что этот последний шаг рекомендуется только для продвинутых пользователей ПК.
Если эти шаги не принесут результата: скачайте и замените файл log4net.dll (внимание: для опытных пользователей)
Если этот последний шаг оказался безрезультативным и ошибка по-прежнему не устранена, единственно возможным вариантом остается выполнение чистой установки Windows 10.
Расширяем log4net. Конкурентное логирование
Библиотека log4net известна и в представлении не нуждается. В ней есть практически всё, что нужно, «из коробки». Однако, есть специфические ситуации, в которых необходимо добавлять/расширять функциональность библиотеки. Конкретная ситуация: есть некоторая библиотека, которая выполняет логирование через log4net в некоторый логер (или несколько — не суть). Эта библиотека используется в N службах. Как сделать так, чтобы логирование происходило в единственный файл? Под катом объяснение, почему FileAppender+MinimalLock не подходит, и реализация Appender’а, который решает задачу. Отдельно хочу сказать, что вопрос о логировании в БД, по сети и т.п. в статье не рассматривается, т.к. это гораздо более серьёзная задача, которая (особенно для больших систем) требует длительного обдумывания и внедрения.
Сразу оговорюсь про тестовое окружение, поскольку в своих доводах я буду опираться на результаты тестов. Процессор i7 (4 ядра, 8 с учётом hyper-threading), приложение log4net.Extensions.Console выполняет в 8 потоках запись в лог с произвольным Sleep после записи. Количество записей в лог — 10000. Приложение BulkStarter запускает 10 экземпляров log4net.Extensions.Console и дожидается их выполнения. Таким образом, 10 процессов, по 8 потоков в каждом выполняют запись в единственный файл. Все временные характеристики были получены в таком тесте с помощью Stopwatch (таймер высокого разрешения до тактов).
FileAppender+MinimalLock
ConcurrentMinimalLock
В поиске достойной замены я набрёл на статью 2008 года на Code Project — Logging into single file from multi-process. В статье описывается реализация ConcurrentMinimalLock, в которой производится буферизация сообщений, а также выполняется открытие файла в цикле (пока блокировка-таки не будет установлена). Вроде бы всё хорошо, однако время вызова метода логирования 1:04 из 1:20. Т.е. по-прежнему долго. И это ещё с учётом того, что это частично асинхронное логирование (при жёстком закрытии приложения всё из очередей будет потеряно).
ConcurrentFileAppender
ActivateOptions
В момент инициализации мы открываем FileStream в режиме записи, но при этом указываем FileShare read-write. Т.е. остальные процессы смогут читать-писать в этот файл параллельно. Жаль нет способа сделать файл только чтения для всех, кто не ConcurrentFileAppender, чтобы тех. поддержка не могла править файлы (случайно, конечно же) онлайн. То, что мы держим файл открытым даёт нам возможность не тратить лишнее время на открытие, как это делается в предыдущих реализациях.
ThreadProc
Метод банально в цикле проверяет очередь на непустоту. Если очередь непуста — копируем её содержимое, очищаем и сбрасываем на диск.
Flush
Накопленные в очереди сообщения сначала записываются в буфер, а потом уже этот буфер целиком вымещается на диск, чтобы не делать последовательные вызовы Write. Ещё важный момент — выполнять Seek перед записью, поскольку текущее положение курсора файла кешируется.
Окончательная реализация
В конце концов был написан базовый класс ConcurrentAppenderSkeleton:
И наследники: ConcurrentFileAppender и ConcurrentForwardingAppender (по аналогии с BufferingForwardingAppender). Последний позволяет выполнять запись (Flush) в набор других Appender’ов. Важно, чтобы эти другие Appender’ы не делали эксклюзивных блокировок (т.е. FileAppender+ExclusiveLock использовать нельзя), а так они будут синхронизированы мьютексом.
В тестовых целях я добавил настройку — в каком месте синхронизироваться по мьютексу: либо сразу перед получением сообщений из очереди, либо только для записи в файл. В первом случае происходит увеличение количества очереди (за счёт более длительных блокировок, т.к. они включают форматирование и запись), но некоторое сокращение затрат на ввод-вывод (поскольку 10 записей по 10Кб быстрее делаются, чем 100 по 1Кб). Во втором случае очередь растёт не очень сильно, нахождение в блокировке минимально (только время на сам ввод-вывод), что более масштабируемо.
Испытания
Напомню, что тест — это запись в лог 500 Мб из 10 процессов по 8 потоков в каждом. В таблице ниже результаты для различных тестов. ConcurrentFileAppender будет отображаться сокращённо как File, ConcurrentForwardingAppender (запись ведеётся в FileAppender+MinimalLock) как Fwd+Min, а также экзотический вариант — ConcurrentForwardingAppender, где запись ведётся в FileAppender с ConcurrentMinimalLock, будет обозначаться как Fwd+Con. Время Sleep для опроса очереди — 10мс. Mutex.WaitOne только для записи будет обозначен как IO, для форматирования и записи — Whole.
Время (с) \ Тест | MinLock | Concurrent MinLock | File IO | File Whole | Fwd+Min IO | Fwd+Min Whole | Fwd+Con IO | Fwd+Con Whole |
---|---|---|---|---|---|---|---|---|
Общее время | 116,6 | 79,7 | 11,27 | 11,6 | 11,96 | 11,61 | 11,7 | 11,61 |
logger.Debug | 100,36 | 64,68 | 0,08 | 0,07 | 0,07 | 0,07 | 0,08 | 0,07 |
Ср. длина очереди | — | — | 9 | 40 | 185 | 169 | 17 | 25 |
Как видно из таблицы, при использовании блокировки мьютексом только на время ввода-вывода, очередь сообщений меньше, что несколько повышает надёжность. При необходимости использовать функциональность RollingFileAppender имеет смысл пользоваться ConcurrentForwardingAppender в связке с ConcurrentMinimalLock, хотя лучше написать свой вариант Lock, который не будет двойную буферизацию делать.
Два главных преимущества Concurrent*Appender’ов: многопроцессовость и практическое отсутствие замедления в работе основного приложения при включённом логировании.
Русские Блоги
Настройка и простое использование log4net
1. Установите log4net
Просмотрите и найдите log4net, выберите проект для установки, нажмите кнопку установки
2. Настройте log4net.
2.1 Создание файла конфигурации log4net log4net.config
2.2 Настройте файл log4net.config
Откройте файл log4net.config и измените его следующим образом:
Вышеупомянутая конфигурация представляет собой две конфигурации журнала вывода на консоль и вывода в файл.
2.3 Настройте AssemblyInfo.cs
3. Протокол испытаний
включить Program.cs Файл, измененный на следующее содержание:
Запустите файл, и результаты будут следующими:
В то же время на диске D моего компьютера был создан файл журнала:
На этом настройка log4net завершена.
постскриптум
Эта статья предназначена для добавления конфигурации и простого использования log4net, более подробная конфигурация и другое последующее использование резюмируются. Вы также можете обратиться к следующей статье:
log4net.dll: что это? и как его убрать
Файл log4net.dll из The Apache Software Foundation является частью log4net
. log4net.dll, расположенный в e: \Program Files \SysTools Outlook MAC Exporter \ с размером файла 258048.00 байт, версия файла 1.2, подпись 2C625D5300B18F3696BA11861F534F85
.
В вашей системе запущено много процессов, которые потребляют ресурсы процессора и памяти. Некоторые из этих процессов, кажется, являются вредоносными файлами, атакующими ваш компьютер.
Чтобы исправить критические ошибки log4net.dll,скачайте программу Asmwsoft PC Optimizer и установите ее на своем компьютере
Asmwsoft PC Optimizer — это пакет утилит для Microsoft Windows, призванный содействовать управлению, обслуживанию, оптимизации, настройке компьютерной системы и устранению в ней неполадок.
1- Очистите мусорные файлы, чтобы исправить log4net.dll, которое перестало работать из-за ошибки.
2- Очистите реестр, чтобы исправить log4net.dll, которое перестало работать из-за ошибки.
Как удалить заблокированный файл log4net.dll.
3- Настройка Windows для исправления критических ошибок log4net.dll:
Всего голосов ( 181 ), 115 говорят, что не будут удалять, а 66 говорят, что удалят его с компьютера.
Как вы поступите с файлом log4net.dll?
Некоторые сообщения об ошибках, которые вы можете получить в связи с log4net.dll файлом
(log4net.dll) столкнулся с проблемой и должен быть закрыт. Просим прощения за неудобство.
(log4net.dll) перестал работать.
log4net.dll. Эта программа не отвечает.
(log4net.dll) — Ошибка приложения: the instruction at 0xXXXXXX referenced memory error, the memory could not be read. Нажмитие OK, чтобы завершить программу.
(log4net.dll) не является ошибкой действительного windows-приложения.
(log4net.dll) отсутствует или не обнаружен.
LOG4NET.DLL
Проверьте процессы, запущенные на вашем ПК, используя базу данных онлайн-безопасности. Можно использовать любой тип сканирования для проверки вашего ПК на вирусы, трояны, шпионские и другие вредоносные программы.
процессов:
Cookies help us deliver our services. By using our services, you agree to our use of cookies.
История одного исследования в log4net и ускорение его более чем в 10 раз
Начну с того, что данная оптимизация будет работать только, если вы используете значения взятые из Properties (например: NDC, MDC) и не используете UserName.
Введение
Я работаю на продуктовую компанию, где есть множество маленьких сервисов, связанных между собой. Так как компании более 10 лет, то и сервисы успели обрасти историей. Для логирования данных используется log4net. Раньше все сервисы писали свои логи в базу данных, используя буферизацию и отдельный диспетчер для записи, чтобы не утруждать рабочий поток логированием. Со временем появилась связка nxlog + elasticsearch + kibana, что сделало поддержку сервисов намного приятней. Началась постепенная миграция сервисов на новый стек. С этого момента у нас было уже две конфигурации для log4net:
Задача
Иногда у нас возникает ситуация, когда какой-то сервис записывает сообщение об ошибке и нам надо разобраться, что стало этому причиной. Чтобы получить полную картину и сделать правильные выводы, нам нужны все связанные с этим заказом логи со всех сервисов. Но вот проблема: у нас нет никаких меток чтобы их связать. Поэтому, мы стали генерировать уникальное значение и передавать его между нашими сервисами вместе с заказом. Перед тем, как запустить обработку заказа, мы вызываем в упрощенном варианте приведенный ниже код, чтобы он смог попасть в логи.
Пример нашей конфигурации log4net в web.config:
Проблема
Но когда мы начали добавлять данный функционал в старые сервисы заменяя запись в базу данных на запись в nxlog. Наши изменения не прошли на code review по причине того, что данная конфигурация на 100 000 записях в лог занимала 15 секунд машинного времени, в то время, как конфигурация с записью в базу данных всего 1.2 секунды. Тогда мы попытались сохранить CorrelationId в базу данных и потерпели поражение. При буферизации не запоминались Properties, где хранилось наше значение, а только Message и Exception.
И как только мы добавили к свойству Fix еще и Properties, то на 100 000 записей в лог стало уходить чуть более 12 секунд машинного времени. И это только на буферизацию, не говоря уже про сохранение в базу данных в фоне. Честно говоря, мы были сильно удивлены этим и еще больше мы были удивлены результатами профилировщика:
По какой-то не понятной нам причине класс LoggingEvent, который в себе хранит всю информацию о записи, пытается запомнить имя пользователя в Properties, хотя мы его об этом точно не просили, так как для этого в этом же классе есть соответствующее не используемое нами свойство.
Краткосрочное решение
В результате появился на свет AccelerateForwardingAppender, в котором при создании запоминаются UserName и Identity значения и копируются во все LoggingEvent объекты, не тратя время на вычисление каждый раз. Хочу вас предупредить, что у нас сервис запущен под IIS_IUSRS и он у нас не меняется, поэтому это работает для нас. Но может не работать для вас, если у вас Windows авторизация, например.
Исходный код с тестами я залил на github, также я использовал BenchmarkDotNet библиотеку, чтобы сравнить производительность.
Method | Median | StdDev | Mean | StdError | StdDev | Op/s | Min | Q1 | Median | Q3 | Max | Place |
---|---|---|---|---|---|---|---|---|---|---|---|---|
TraceAppenderBenchmark | 104.5323 us | 4.5553 us | 105.4234 us | 0.8934 us | 4.5553 us | 9485.56 | 98.7720 us | 102.2095 us | 104.5323 us | 107.0166 us | 116.3275 us | 2 |
AcceleratedTraceAppenderBenchmark | 2.6890 us | 0.1433 us | 2.7820 us | 0.0236 us | 0.1433 us | 359456.73 | 2.6134 us | 2.6629 us | 2.6890 us | 2.9425 us | 3.0275 us | 1 |
По результатам видно, что прирост довольно солидный в 359456.73 / 9485.56 = 37.9 раз. Такое большое значение обусловлено тем, что в тесте логи никуда не сохраняются. На наших сервисах логи пересылаются в nxlog и поэтому для нас реальный прирост получился в 10 раз, 15 секунд машинного времени превратились в 1.5 секунды.
Долгосрочное решение
Воодушевленный таким результатом и я сделал pull request для log4net, где предложил удалить дублирующий код, и получил ожидаемый ответ:
С одной стороны автор прав: любое изменение может быть критичным для кого-то, но с другой стороны обидно, что тратится столько времени впустую. Хотелось бы узнать ваше мнение.