Где log4net создаст этот файл журнала? - PullRequest
67 голосов
/ 12 мая 2010

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

Мой 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

Ответы [ 7 ]

59 голосов
/ 19 июля 2013

Если вы хотите, чтобы ваш файл журнала находился в указанном месте, которое будет определено во время выполнения, может быть выходным каталогом вашего проекта, тогда вы можете настроить запись .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();

Насколько это просто? :)

42 голосов
/ 11 апреля 2014

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

Вы можете указать место выбора в файле 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>

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

19 голосов
/ 12 мая 2010

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

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

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

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

Log.Debug("This is a DEBUG level message.");
10 голосов
/ 29 мая 2012

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

Где:

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

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

6 голосов
/ 05 марта 2017
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");
4 голосов
/ 12 мая 2010

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

Я прокомментирую часть журнала создания. Имо там нет правильного пути. При ручном кодировании логгеров я делаю так, как вы:

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

потому что это коротко и кратко.

Тем не менее, в настоящее время я не создаю экземпляры регистратора внутри классов, Я позволил своему контейнеру IoC внедрить его для меня .

0 голосов
/ 12 мая 2010

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

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

...