2010-05-12 2 views
56

Когда я устанавливаю значение файла logs\log-file.txt, где именно он будет создавать эту папку? В каталоге /bin?Где будет log4net создать этот файл журнала?

Моя web.config выглядит следующим образом:

<log4net> 
    <appender name="FileAppender" type="log4net.Appender.FileAppender"> 
     <file value="logs\log-file.txt" /> 
     <appendToFile value="true" /> 
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" /> 
     </layout> 
    </appender> 
</log4net> 

Является ли это правильный способ войти:

ILog logger = LogManager.GetLogger(typeof(CCController)); 
logger.Error("Some Page", ex); // where ex is the exception instance 
+0

Возможно, пожалуйста, примите один из ответов правильно? Спасибо –

ответ

18

Значение файла может быть либо абсолютный путь, как «C: \ журналы \ log.txt "или относительный путь, который, по моему мнению, относится к каталогу bin.

Насколько его реализации, я обычно место следующее в верхней части любого класса я планирую войти:

private static readonly ILog Log = LogManager.GetLogger( 
MethodBase.GetCurrentMethod().DeclaringType); 

Наконец, вы можете использовать его так:

Log.Debug("This is a DEBUG level message."); 
+1

hmm..it, кажется, не создает файл журнала в любом месте, и я не получаю никакой ошибки? – Blankman

+2

Звучит как проблемы с разрешениями. Я бы привязал конфигурацию к абсолютному пути за пределами вашего веб-каталога. После этого убедитесь, что файлы и папка журнала имеют разрешения, позволяющие правильному доступу рабочего процесса asp.net. –

+0

Для относительного пути мне нравится, что файл журнала находится на уровне проекта:

0

Я думаю, что ваш образец сохраняется в папках проекта, и если пользователь по умолчанию iis или .NET не имеет права на создание, он не сможет создать папку журналов.

Сначала я создал папку журналов и разрешил пользователю iis полное разрешение и выяснял, создан ли файл журнала.

4

Для папки журнала и файлов, перейдите по ссылке @Bens answer.

Однако я буду комментировать составную часть журнала. Imo нет правильный путь. При кодировании регистраторов вручную я делаю это так, как вы это делаете:

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

потому что он короткий и краткий.

Тем не менее, я не создаю экземпляры регистратора внутри классов в эти дни, I let my IoC container inject it for me.

9

Log4net сохраняет в папке проекта. Что-то вроде: \SolutionFolder\ProjectFolder\bin\SolutionConfiguration\logs\log-file.txt.

Где:

  • SolutionFolder где вы сохраните ваше решение
  • ProjectFolder папка, в которой ваш проект живет в раствор и
  • SolutionConfiguration это папка, contais все бинарные файлы вашего проекта (по умолчанию используется Debug или Release)

Надеюсь, это поможет!

42

Если вы хотите, чтобы ваш файл журнала будет место в определенном месте, которое будет принято решение во время выполнения может быть ваш проект вывода каталога, то вы можете настроить вас .config запись файла таким образом

<file type="log4net.Util.PatternString" value="%property{LogFileName}.txt" /> 

, а затем в коде перед вызовом log4net configure, установить новый путь ниже

log4net.GlobalContext.Properties["LogFileName"] = @"E:\\file1"; //log file path 
log4net.Config.XmlConfigurator.Configure(); 

Как просто это? :)

+1

Отличный трюк, он помогает разместить всю конфигурацию в одном месте :) –

32

он создаст файл в корневой директории вашего проекта/решения.

Вы можете указать местоположение выбора в web.config вашего приложения следующим образом:

<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:/ServiceLogs/Olympus.Core.log" /> 
     <appendToFile value="true" /> 
     <rollingStyle value="Date" /> 
     <datePattern value=".yyyyMMdd.log" /> 
     <maximumFileSize value="5MB" /> 
     <staticLogFileName value="true" /> 
     <lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" /> 
     <maxSizeRollBackups value="-1" /> 
     <countDirection value="1" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %-5level [%thread] %logger - %message%newline%exception" /> 
     </layout> 
    </appender> 

файл тег определяет местоположение.

+7

+1 единственный ответ, который непосредственно отвечает на вопрос " Где log4net создаст этот файл журнала? " – Keith

+0

Привет, Oladipo, для меня без определения пути журнал создан в папке bin. – Pompair

2
FileAppender appender = repository.GetAppenders().OfType<FileAppender>().FirstOrDefault(); 
if (appender != null) 
    logger.DebugFormat("log file located at : {0}", appender.File); 
else 
    logger.Error("Could not locate fileAppender");