Como faço para criar um log nomeado em $ TOMCAT_HOME/logs para meu servlet?

Eu estou atualmente registrando via o mais simples dos métodos dentro do meu servlet usando o Tomcat. Eu uso o ServletConfig.getServletContext (). Log para registrar a atividade. Isso grava no localhost.YYYY-MM-DD.log em $ TOMCAT_HOME/logs.

Não quero me afastar da simplicidade desse mecanismo de registro, a menos que seja absolutamente necessário. Mas eu gostaria de nomear meu arquivo de log. Em vez de "localhost" .YYYY-MM-DD.log, existe uma maneira de fazer com que ele grave em "myAppName" .YYYY-MM-DD.log. Eu sei que eu poderia criar meu próprio mecanismo, mas novamente, eu estou procurando simplicidade aqui.

Eu estou esperando ficar longe de um framework completo como o Log4j.

1
Eu posso fazer o que eu quero (veja a resposta abaixo) sem um framework inteiro e tudo o que o acompanha, o jar, a curva de aprendizado, etc. Às vezes menos.
adicionado o autor dacracot, fonte
O que estaria errado com um framework como o Log4j? É padrão e tem uma interface bastante simples.
adicionado o autor Hans Doggen, fonte

2 Respostas

Portanto, existe uma maneira através do $ TOMCAT_HOME/conf/logging.properties sem tocar no código do meu servlet ...

antes...

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler

depois de...

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4admin.org.apache.juli.FileHandler, 5host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler, 6localhost.org.apache.juli.FileHandler

então adicione ...

6localhost.org.apache.juli.FileHandler.level = FINE
6localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
6localhost.org.apache.juli.FileHandler.prefix = myAppName.

e adicione...

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myAppName].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/myAppName].handlers = 6localhost.org.apache.juli.FileHandler

e pula o gato. Isso criou um $ TOMCAT_HOME/logs/myAppName.2008-10-14.log com minhas mensagens simplificadas ServletConfig.getServletContext (). Log() apenas.

0
adicionado

Para o Tomcat 6.x, você pode alterar a configuração de criação de log em conf/logging.properties.

Mas eu prefiro uma configuração separada com o Log4j ...

0
adicionado
Existe uma maneira de tornar o logging.properties específico para o contexto do meu servlet? Além disso, prefiro a simplicidade, e o Log4j não me parece simples (não necessariamente difícil, mas sobrecarregado de opções).
adicionado o autor dacracot, fonte
log4j é muito simples de usar. Apenas tome os 5 minutos necessários para configurá-lo pela primeira vez, use um mesmo arquivo de configuração log4j.properties ou log4j.xml, e você ficará muito feliz com os resultados (e se pergunte por que você não o usou antes! ).
adicionado o autor matt b, fonte