относительный путь log4net к общему файлу конфигурации - PullRequest
0 голосов
/ 22 мая 2018

В моем приложении настроен log4net logger, в котором я инициализирую несколько файлов журнала:

<appender name="AlgorithmData" type="log4net.Appender.RollingFileAppender">
  <file value="H:/Logs/AlgorithmData.csv" />
  <PreserveLogFileNameExtension  value="true" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="yyyyMMdd" />
  <maxSizeRollBackups value="20" />
  <maximumFileSize value="100MB" />
  <staticLogFileName value="true" />
  <ImmediateFlush value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%message%newline" />
  </layout>
</appender>
<appender name="AlgorithmTimeData" type="log4net.Appender.RollingFileAppender">
  <file value="H:/Logs/AlgorithmTimeData.log" />
  <PreserveLogFileNameExtension  value="true" />
  <appendToFile value="true" />
  <rollingStyle value="Composite" />
  <datePattern value="yyyyMMdd" />
  <maxSizeRollBackups value="20" />
  <maximumFileSize value="100MB" />
  <staticLogFileName value="true" />
  <ImmediateFlush value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%message%newline" />
  </layout>
</appender>

Есть ли способ указать только имя файла и добавить / объединить соединение со значением appsettingfilepath, чтобы я мог изменить путь к файлу независимо от среды, не меняя регистратор?

1 Ответ

0 голосов
/ 20 июля 2018

Для этого не существует готовой конфигурации, но ее легко настроить с минимумом кода.

Я понимаю, что вы хотите сохранить путь к папке журналав AppSettings, как показано ниже.

<configuration>
    <appSettings>
        <add key="logPath" value="H:\Logs" />
    </appSettings>
</configuration>

В процедуре запуска вашего приложения присвойте значение logPath AppSetting для Log4net context property.

log4net.GlobalContext.Properties["logPath"] = ConfigurationManager.AppSettings["logPath"];

Сконфигурируйте путь к выходному файлу RollingFileAppender с помощью этого свойства контекста с помощью %property{logPath}.

<appender name="AlgorithmTimeData" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="%property{logPath}\AlgorithmTimeData.log" />

    <!-- More settings go here. -->
</appender>

В результате файл журнала будет создан на H:\Logs\AlgorithmTimeData.log.

...