Можно ли войти в БД и файл условно, используя log4net с тем же файлом конфигурации? - PullRequest
0 голосов
/ 15 ноября 2018

Я использую .net core 2.0, поскольку ядро ​​.net не имеет файла web.config, поэтому я создал отдельный файл как log4net.config для конфигурации log4net.

У меня есть два приложения для входа в файл и db

      <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="log.txt" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="250KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
        </layout>
      </appender>
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
    <bufferSize value="1" />
    <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <connectionString value="server=xxxx; uid=xxxx; pwd=xxxx; database=xxxx" />
    <commandText value="INSERT INTO log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
    <parameter>
      <parameterName value="@log_date"/>
      <dbType value="DateTime"/>
      <layout type="log4net.Layout.RawTimeStampLayout"/>
    </parameter>
    <parameter>
      <parameterName value="@thread"/>
      <dbType value="String"/>
      <size value="255"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%thread"/>
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@log_level"/>
      <dbType value="String"/>
      <size value="50"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%level"/>
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@logger"/>
      <dbType value="String"/>
      <size value="255"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%logger"/>
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@message"/>
      <dbType value="String"/>
      <size value="4000"/>
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%message"/>
      </layout>
    </parameter>
    <parameter>
      <parameterName value="@exception"/>
      <dbType value="String"/>
      <size value="2000"/>
      <layout type="log4net.Layout.ExceptionLayout"/>
    </parameter>
  </appender>

      <root>
        <level value="INFO" />
        <appender-ref ref="RollingFileAppender" />
        <appender-ref ref="ADONetAppender" />
      </root>

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

If(conditon == true){
   log.Info("It will log into db")
}else{
   log.Info("It will log into file")
}

Возможно ли добиться этого с помощью одного и того же файла конфигурации в .net core или мне нужно создать два разных файла конфигурации?

...