Подтвердить что ты не робот

Где log4net создаст этот файл журнала?

Когда я устанавливаю значение файла 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
4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

Ответ 4

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

Где:

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

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

Ответ 5

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");

Ответ 6

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

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

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

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

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

Ответ 7

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

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

Ответ 8

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

если вы хотите, вы можете указать путь к файлу EXE вашего приложения следующим образом:

var logFileLocation = System.IO.Path.GetDirectoryName
(System.Reflection.Assembly.GetEntryAssembly().Location);

и затем отправьте этот 'logFileLocation' методу, описанному в ссылке выше, например:

Initialize(logFileLocation);

и ты готов к работе! :)