0

私は、デバッグとログローテーションにlogback-classicを使用してみようと思ったプロジェクトに取り組んでいます。これをMavenコンテキストで使用して、JBoss 7.1ApplicationServerにデプロイする.warファイルをビルドおよび作成しています。

コードのresourcesフォルダーにlogback.xmlファイルを配置し、test/resourcesにlogback-test.xmlを配置しました。

私が使用しているアクティブなjarは、実際のデバッグを出力するためのSLF4Jです。

public class MyClass extends MultiActionController {
  private Logger logger = LoggerFactory.getLogger(MyClass.class);

  public MyClass() {
    logger.debug("hello");
  }
}

Maven自体のコードでJUnitテストを実行すると機能しますが、.warファイルをビルドした後、STDOUTでデバッグが行われず、作成されたファイルも見つかりません。

構成ファイルのSTDOUTから実際のログを削除したことは知っていますが、ログはどこに行きますか...

logback.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>logs/myproject.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy> 

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyMMdd HH:mm:ss.SSS} [%-5.5level] [%-25.25logger] %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="FILE" />
    </root>
</configuration>

フォルダ「logs」は、JBossインスタンスで明示的に作成する必要がありますか、それともこれを機能させるためにそれに関連して参照する必要がありますか?それとも私が見逃したものはありますか?logback.xmlファイルをJBossインスタンスに入れる必要がありますか?

最高、ヘンリック

4

2 に答える 2

2

まず、logback.xmlがクラスパスにあることを確認する必要があります。たとえば、 Chapter 3: Logback configurationWEB-INF/classes/logback.xmlで言及されています。

Chapter 4: Appendersでは、 FileAppenderおよびRollingFileAppenderプロパティについて次のように言及しています。

file *文字列* 書き込むファイルの名前。ファイルが存在しない場合は、作成されます。MS Windows プラットフォームでは、バック スラッシュのエスケープを忘れることがよくあります。たとえば、値 c:\temp\test.log は、'\t' が単一のタブ文字 (\u0009) として解釈されるエスケープ シーケンスであるため、適切に解釈されない可能性があります。正しい値は、c:/temp/test.log または c:\temp\test.log として指定できます。File オプションにはデフォルト値はありません。ファイルの親ディレクトリが存在しない場合、FileAppender は必要であるが存在しない親ディレクトリを含めて自動的に作成します。

logback.xml の例は次のとおりです。

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history -->
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

これが役立つことを願っています。

于 2013-03-08T07:12:40.287 に答える
0

ファイルタグを定義する必要があります(前の回答ですでに述べたように)。しかし、それがどのように解釈されるかも知る必要があります。Logbackは、それが使用されているアプリケーションに関連していると見なします。したがって、

<file>logs/<myfile>.log</file>

logbackは、JBossのルートに「logs」フォルダーを作成する必要があります(より具体的には、開始する.shスクリプトが配置されているフォルダー)。JBossのルートからチェックして、そこからログフォルダとファイルを見つけることができるかどうかを確認します。

于 2013-03-21T12:19:23.100 に答える