6

logback.xml にこのアペンダーがあります

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>logFile.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>logFile.%d{yyyy-MM-dd}.log</FileNamePattern>
        <maxHistory>5</maxHistory>
    </rollingPolicy>

    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - %msg%n</Pattern>
    </layout>
</appender> 

<root>
    <level value="ALL" />
    <appender-ref ref="FILE" />
</root>

そのため、現時点ではすべてのログを 1 つのファイルに保存しています。あるファイルはエラーログのみを保存し、他のファイルは他のすべてを保存するようにするにはどうすればよいですか?

そして、コード内で logger のインスタンスを 1 つだけ使用し続けたいと考えています。次のようになります。

 private static final Logger log = LoggerFactory.getLogger(Main.class);
4

2 に答える 2

17

ログバック カテゴリの検索を開始し、フィルターを見つけました。

アペンダーにフィルターの説明を追加するだけです。

    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
于 2012-11-08T08:11:21.387 に答える
0

これは私が Jboss に対して行っていることですが、解決策が得られると思います。

次のように、error.log 専用のアペンダーを作成します。

<appender name="ErrorFile" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/error.log"/>
      <param name="Threshold" value="ERROR"/>
      <param name="Append" value="false"/>

      <!-- Rollover at midnight each day -->
      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

      <!-- Rollover at the top of each hour
      <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
      -->

      <layout class="org.apache.log4j.PatternLayout">
         <!-- The default pattern: Date Priority [Category] Message\n -->
         <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

         <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
         <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
          -->
      </layout>
   </appender>

それらの残りのアペンダーを作成します

 <appender name="File" class="org.jboss.logging.appender.DailyRollingFileAppender">
          <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
          <param name="File" value="${jboss.server.log.dir}/server.log"/>
          <param name="Threshold" value="ALL"/>
          <param name="Append" value="false"/>

          <!-- Rollover at midnight each day -->
          <param name="DatePattern" value="'.'yyyy-MM-dd"/>

          <!-- Rollover at the top of each hour
          <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
          -->

          <layout class="org.apache.log4j.PatternLayout">
             <!-- The default pattern: Date Priority [Category] Message\n -->
             <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>

             <!-- The full pattern: Date MS Priority [Category] (Thread:NDC) Message\n
             <param name="ConversionPattern" value="%d %-5r %-5p [%c] (%t:%x) %m%n"/>
              -->
          </layout>
       </appender>

次に、上記の両方に特定のカテゴリを作成します

<category name="your_file_name/package_name">
      <priority value="ERROR"/>
      <appender-ref ref="ErrorFILE"/>
 </category>
 <category name="your_file_name/package_name">
      <priority value="ALL"/>
      <appender-ref ref="File"/>
 </category>
于 2012-11-08T08:02:35.700 に答える