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
Я нашел проблему, и, к сожалению, именно в этой программе регистрация не была установлена в программе, и мне была предоставлена некорректная информация.