log4j

Olá, estou criando um log para minha aplicação e preciso que crie um log dentro da pasta log da pasta tomcat que esta no default do windows.

veja o exemplo semelhante do que preciso porém …

log4j.appender.SAP.File=${glassfish_home}/glassfish/domains/domDesenv/logs/SAP.html

ao invez de glassfish _home precisava do tomcat_home.

Existe a tomcat_home? para ele pegar o classpath direto e nao ter que colocar o caminho completo?

Vlw galera.

A váriável de ambiente que indica o path do Tomcat é CATALINA_HOME. Ela é criada durante a instalação do mesmo.

Caso essa variável não exista, você pode criá-la definindo a pasta raíz do tomcat como seu valor.

Tomei erro

java.io.FileNotFoundException: $CATALINA_HOME/logs/meuLog.log (Arquivo ou diretório não encontrado)
at java.io.FileOutputStream.open(Native Method)

veja o que fiz:

log4j.appender.fileOut.File=$CATALINA_HOME/logs/meuLog.log

Se eu colocar um endereco tipo C:\meuLog.log ele cria mas quero algo generico que rode em win e linux afinal java a grande linguagem multiplataforma s2.

[quote=samuelM]Tomei erro

java.io.FileNotFoundException: $CATALINA_HOME/logs/meuLog.log (Arquivo ou diretório não encontrado)
at java.io.FileOutputStream.open(Native Method)

veja o que fiz:

log4j.appender.fileOut.File=$CATALINA_HOME/logs/meuLog.log

Se eu colocar um endereco tipo C:\meuLog.log ele cria mas quero algo generico que rode em win e linux afinal java a grande linguagem multiplataforma s2.[/quote]

coloca entre chaves

log4j.appender.fileOut.File=${CATALINA_HOME}/logs/meuLog.out

verifica antes se a variavel existe

windows

echo %CATALINA_HOME%

linux

echo $CATALINA_HOME

Retorno vazio, vou ter q setar a variavel no ambiente.

Fui no /etc/profile e inseri o seguinte.

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
export CATALINA_HOME=/opt/apache-tomcat-7.0.32

=====esta parte de baixo ja tinha================
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
......
...........................
......
============================================

e mesmo assim o echo retorna null

[quote=samuelM]Fui no /etc/profile e inseri o seguinte.

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
export CATALINA_HOME=/opt/apache-tomcat-7.0.32

=====esta parte de baixo ja tinha================
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi
......
...........................
......
============================================

e mesmo assim o echo retorna null

[/quote]

digita source .profile para aplicar as modificações, depois veja se setou a variavel…

Estranho que agora no echo ta retornando a variavel de ambiente porem to tomando erro

log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: /logs/meuLog.out (Arquivo ou diretório não encontrado)

[quote=samuelM]Estranho que agora no echo ta retornando a variavel de ambiente porem to tomando erro

log4j:ERROR setFile(null,true) call failed. java.io.FileNotFoundException: /logs/meuLog.out (Arquivo ou diretório não encontrado)[/quote]

ola,

Aparentemente ele o LOG4J não achou a variável de ambiente

Tente passar o parametro abaixo para a JVM (apontando para o arquivo de configuração do LOG4J

-Dlog4j.configuration=file:/C:/log4j/log4j.properties

você pode passar outro parãmetro para tentar debugar o que está acontecendo

-Dlog4j.debug