Как изменить путь к файлу журнала (log4net) с диска по умолчанию на альтернативный диск

Я использую log4net для записи файла журнала для своего приложения. Я установил путь к файлу журнала, как показано ниже:

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
      <file value="D:\MyApp\LogFiles\MyApp_"/>
      <appendToFile value="true"/>
      <rollingStyle value="Date"/>
                    .  
                    .
                    .

Лог-файл сохраняется на диске D. Как перейти на диск C, если диск D (расположение файла журнала по умолчанию) недоступен/не существует? Можно ли сделать это в кодировке (С#), или у меня нет выбора, чтобы заставить других пользователей иметь диск D?


person YWah    schedule 13.08.2015    source источник


Ответы (2)


Приложение можно настроить в коде вместо использования файла конфигурации, поэтому довольно легко определить, на каком диске файл журнала должен быть помещен в код. Более подробную информацию см. в другом потоке< /а>.

person Simon zhao    schedule 13.08.2015
comment
Привет @Simonzhao, спасибо за ссылку ... я совместил это с проверкой дисковода, и теперь все работает хорошо =) ... - person YWah; 14.08.2015

Путем объединения ссылки, предоставленной @Simonzhao, решение будет выглядеть так:

        public static Logger()
        {
            PatternLayout patternLayout = new PatternLayout();
            patternLayout.ConversionPattern = "%date %-5level %message%newline";
            patternLayout.ActivateOptions();

            RollingFileAppender rollingFileAppender = new RollingFileAppender();
            rollingFileAppender.AppendToFile = true;

            #region Write the log file into D drive, if D drive is not found, then into E drive, else C drive

            var diskDrive = DriveInfo.GetDrives();

            if (diskDrive.Where(drive => drive.Name == "D:\\").Count() == 1)
              rollingFileAppender.File = @"D:\LogFiles\MyApp_";

            else if (diskDrive.Where(drive => drive.Name == "E:\\").Count() == 1)
              rollingFileAppender.File = @"E:\LogsFiles\MyApp_";

            else
              rollingFileAppender.File = @"C:\LogFiles\MyApp_";

            #endregion

            rollingFileAppender.Layout = patternLayout;
            rollingFileAppender.MaxSizeRollBackups = 5;
            rollingFileAppender.MaximumFileSize = "5MB";
                          .
                          .
                          .
       }
person YWah    schedule 14.08.2015