2

SpringMVCとログバックの調査を始めたばかりです。

これは私のコントローラーです(これまでに持っているのは1つだけです)

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class IndexController {

    protected final static Logger logger = LoggerFactory.getLogger(IndexController.class);

    @RequestMapping("/index")
    public ModelAndView index() {
        logger.info("Returning index view");
        return new ModelAndView("index");
    }
}

これが上記のテストコードです。

import org.junit.Test;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;

import org.springframework.web.servlet.ModelAndView;

public class IndexControllerTest {

    @Test
    public void index() throws Exception {
        IndexController iController = new IndexController();
        ModelAndView modelAndView = iController.index();

        assertNotNull(modelAndView.getModel());
        assertEquals("index", modelAndView.getViewName());
    }
}

FixedWindowRollingPolicyを使用してファイルにログインするためのログバック設定があります。構成は、

<configuration>
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <File>logFile.log</File>
        <RollingPolicy
            class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <FileNamePattern>logFile.%i.log</FileNamePattern>
            <MinIndex>1</MinIndex>
            <MaxIndex>3</MaxIndex>
        </RollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>5MB</MaxFileSize>
        </triggeringPolicy>
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %-26(%d{HH:mm:ss,SSS} [%thread]) %-5level %logger{32} - %msg%n
            </Pattern>
        </layout>
    </appender>
    <root level="info">
        <appender-ref ref="FILE" />
    </root>
</configuration>

問題は、ブラウザからサイトにアクセスしているときにログファイルにエントリが作成されないことです。コントローラーが呼び出され、その後ブラウザーに表示されるビューが返されると思います。したがって、ビューが表示される前にlogメソッドを呼び出す必要があります。しかし、何も起こりません。

ただし、テストを実行すると、ログは期待どおりに機能し、logFileに「インデックスビューを返す」ための特定のエントリがあります。

上記の状況に関するヘルプやガイダンスは大歓迎です。

編集: 現時点でapacheでtomcat6を使用しています。

ログバック構成ファイルlogback.xmlは、src(デフォルトパッケージ)の直下に配置されます。デプロイ後に確認したので、WEB-INF /classes/にコピーされます。

4

2 に答える 2

0

奇妙に聞こえるかもしれませんが、appender.Fileプロパティに絶対パスを使用すると、ログは問題なく取得されるようです。

<File>/home/sujoy/logFile.log</File>

たとえば、上記の場合、期待どおりにログを取得します。

なぜこれが起こるのか私にはわかりません。特に、テスト中はログが正常に機能するためです。

于 2010-01-02T19:09:55.813 に答える
0

Tomcatインスタンスを実行しているユーザーには、ログファイルが指定されている場所に書き込む権限がありますか?

于 2010-01-03T01:45:35.627 に答える