strong - log4net warn




Log4Net Konfigurationsprotokolllevel (4)

Wie mache ich Log4net Log nur Info-Level-Logs? Ist das überhaupt möglich? Können Sie nur einen Schwellenwert festlegen?

Dies ist, was ich habe, und es protokolliert Info und darüber, wie ich es erwarten würde. Gibt es etwas, was ich tun kann, um es nur Log-Informationen zu machen?

<logger name="BrokerCollection.Model.XmlDocumentCreationTask">
  <appender-ref ref="SubmissionAppender"/>
  <level value="Info" />
</logger>

Innerhalb der Definition des Appenders glaube ich, dass du so etwas tun kannst:

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
    <filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="INFO"/>
        <param name="LevelMax" value="INFO"/>
    </filter>
    ...
</appender>

Verwenden Sie den threshold .

Beispielsweise:

   <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <threshold value="WARN"/>
        <param name="File" value="File.log" />
        <param name="AppendToFile" value="true" />
        <param name="RollingStyle" value="Size" />
        <param name="MaxSizeRollBackups" value="10" />
        <param name="MaximumFileSize" value="1024KB" />
        <param name="StaticLogFileName" value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <param name="Header" value="[Server startup]&#13;&#10;" />
            <param name="Footer" value="[Server shutdown]&#13;&#10;" />
            <param name="ConversionPattern" value="%d %m%n" />
        </layout>
    </appender>
    <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender" >
        <threshold value="ERROR"/>
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date [%thread]- %message%newline" />
        </layout>
    </appender>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
        <threshold value="INFO"/>
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%thread] %m%n" />
        </layout>
    </appender>

In diesem Beispiel werden alle INFO und höher an die Konsole gesendet, alle WARN werden an die Datei gesendet und FEHLER werden an das Ereignisprotokoll gesendet.


Ja. Es wird mit einem Filter am Appender gemacht.

Hier ist die Appender-Konfiguration, die ich normalerweise verwende, beschränkt auf nur INFO-Ebene.

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
  <file value="${HOMEDRIVE}\\PI.Logging\\PI.ECSignage.${COMPUTERNAME}.log" />
  <appendToFile value="true" />
  <maxSizeRollBackups value="30" />
  <maximumFileSize value="5MB" />
  <rollingStyle value="Size" />     <!--A maximum number of backup files when rolling on date/time boundaries is not supported. -->
  <staticLogFileName value="false" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%date{yyyy-MM-dd HH:mm:ss.ffff} [%2thread] %-5level %20.20type{1}.%-25method at %-4line| (%-30.30logger) %message%newline" />
  </layout>

  <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="INFO" />
  </filter>
</appender>    

Sie können log4net.Filter.LevelMatchFilter verwenden. Weitere Optionen finden Sie unter log4net tutorial - filters

in Ihrem Appenderabschnitt hinzufügen

<filter type="log4net.Filter.LevelMatchFilter">
    <levelToMatch value="Info" />
    <acceptOnMatch value="true" />
</filter>

Der Accept-on-Match-Standard ist wahr, also können Sie ihn auslassen, aber wenn Sie ihn auf false setzen, können Sie die log4net-Filter herausfiltern