Pergunta

Acabei de começar a explorar Springmvc e Logback.

Este é o meu controlador (o único que tenho até agora)

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");
    }
}

E este é o código de teste para o acima.

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());
    }
}

Eu tenho uma configuração de logback para fazer login em um arquivo com fixawindowrollingpolicy, a configuração é,

<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>

O problema, eu tenho agora, é que nenhuma entrada é criada no arquivo de log ao acessar o site no navegador. Suponho que o controlador seja chamado que, posteriormente, retorne a visualização apresentada no navegador e, portanto, o método de log deve ser chamado antes da exibição da exibição. Mas nada acontece.

No entanto, ao executar o teste, o registro funciona conforme o esperado e eu tenho a entrada específica no arquivo de log para "Visualização de índice de retorno".

Qualquer ajuda ou orientação sobre a situação acima é muito apreciada.

EDITAR:Usando o tomcat6 com o Apache no momento.

O arquivo de configuração de logback, logback.xml é colocado diretamente em SRC (pacote padrão). Como verifiquei após a implantação, ele é copiado para Web-Inf/Classes/

Foi útil?

Solução

Por mais estranho que pareça, parece que eu recebo os logs muito bem, quando uso o caminho absoluto para a propriedade Appender.File!

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

Com o exposto acima, por exemplo, eu recebo meus logs que eu esperaria.

Eu não tenho ideia de por que isso acontece. Especificamente, pois enquanto testava o log funciona bem.

Outras dicas

O usuário executando a instância do tomcat tem permissão para escrever onde quer que o arquivo de log seja especificado?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top