Eu escrevi um projeto de serviço da web usando o netbeans 6.7.1 com glassfish v2.1, coloque log4j.properties no diretório raiz do projeto e use:
static Logger logger = Logger.getLogger(MyClass.class);
no Construtor:
PropertyConfigurator.configure("log4j.properties");
e em funções:
logger.info("...");
logger.error("...");
// ...
mas, são informações de erro (na verdade, tentei colocá-lo em quase todos os diretórios que pude perceber):
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.
o projeto de exemplo pode ser obtido em http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8
Respostas:
Sei que é um pouco tarde para responder a essa pergunta, e talvez você já tenha encontrado a solução, mas estou postando a solução que encontrei (depois que pesquisei bastante no Google), por isso pode ajudar um pouco:
-Dlog4j.debug
@ o final das suas opções java do tomcatEspero que isso ajude.
rgds
fonte
Como já foi dito, o log4j.properties deve estar em um diretório incluído no caminho de classe. Quero acrescentar que, em um projeto automatizado, um bom local pode ser
src/main/resources/log4j.properties
fonte
Você pode especificar o local do arquivo de configuração com o argumento da VM -Dlog4j.configuration = "file: / C: /workspace3/local/log4j.properties"
fonte
log4j.configurationFile
Você deve colocá-lo no diretório raiz, que corresponde ao seu contexto de execução.
Exemplo:
Se você começar a executar a partir de um projeto diferente, precisará desse arquivo no projeto usado para iniciar a execução. Por exemplo, se um projeto diferente realizar alguns testes JUnit, ele precisará também ter seu arquivo log4j.properties.
Sugiro usar log4j.xml em vez do log4j.properties. Você tem mais opções, obtenha assistência do seu IDE e assim por diante ...
fonte
Para um projeto baseado em Maven, mantenha seu log4j.properties em src / main / resources. Nada mais a fazer!
fonte
Se você colocar log4j.properties dentro de src, não precisará usar a instrução -
Ele será obtido automaticamente, pois o arquivo de propriedades está no caminho de classe.
fonte
Experimentar:
fonte
O arquivo deve estar localizado no diretório WEB-INF / classes. Essa estrutura de diretórios deve ser empacotada no arquivo war.
fonte
Meu IDE é o NetBeans. Coloquei o arquivo log4j.property, como mostrado nas fotos
Raiz
Rede
WEB-INF
Para usar este arquivo de propriedades, você deve escrever este código:
Você pode definir o contexto estático ServletContext de outro arquivo JSP. Exemplo:
Agora você pode usar o arquivo log4j.property em seus projetos.
fonte
Algumas respostas específicas tecnicamente corretas já foram fornecidas, mas, em geral, elas podem estar em qualquer lugar no caminho de classe do tempo de execução, ou seja, onde quer que as classes sejam procuradas pela JVM.
Pode ser o diretório / src no Eclipse ou o diretório WEB-INF / classes em seu aplicativo implementado, mas é melhor estar ciente do conceito de caminho de classe e por que o arquivo é colocado nele, não apenas trate WEB-INF / classes como um diretório "mágico".
fonte
Gastei muito tempo para descobrir por que o arquivo log4j.properties não é visto.
Então notei que ele estava visível para o projeto apenas quando estava nas pastas MyProject / target / classes / e MyProject / src / main / resources .
Espero que seja útil para alguém.
PS: O projeto foi baseado em artigos.
fonte
Descobri que o Glassfish por padrão está visualizando [local de instalação do Glassfish] \ glassfish \ domains [seu domínio] \ como o diretório de trabalho padrão ... você pode soltar o arquivo log4j.properties nesse local e inicializá-lo no seu código usando PropertyConfigurator Como mencionado anteriormente...
fonte
Não sei se essa é a maneira correta, mas resolveu o meu problema. coloque o arquivo log4j.properties em "pasta do projeto" / config e use PropertyConfigurator.configure ("config // log4j.properties");
funcionará com o IDE, mas não quando você mesmo executar o arquivo jar. quando você executa o arquivo jar sozinho, copie o arquivo log4j.properties para a pasta em que o arquivo jar está. quando o arquivo jar e property no mesmo diretório, ele executa bem.
fonte
Coloque log4j.properties no caminho de classe. Aqui estão os 2 casos que ajudarão você a identificar o local adequado: 1. Para aplicativos da Web, o caminho da classe é / WEB-INF / classes.
Para testar a partir do teste main / unit, o caminho da classe é o diretório de origem
fonte
Há muitas maneiras de fazer isso:
Way1: se você estiver tentando no projeto maven sem usar o PropertyConfigurator
Primeiro: verifique o diretório de recursos em scr / main
segue a captura de tela:
Way2: Se você estiver tentando com o arquivo Properties para o projeto java / maven, use PropertyConfigurator
Coloque o arquivo de propriedades em qualquer lugar do projeto e forneça o caminho correto. diga: src / javaLog4jProperties / log4j.properties
estático{
}
Way3: Se você está tentando com xml no projeto java / maven Use DOMConfigurator
Coloque o arquivo de propriedades em qualquer lugar do projeto e forneça o caminho correto. diga: src / javaLog4jProperties / log4j.xml
estático{
}
fonte
Sua configuração padrão do projeto terá uma estrutura de projeto semelhante a:
Se você colocar log4j.properties dentro da pasta de recursos, poderá criar a pasta de recursos se ela não existir.
fonte
Na verdade, acabei de enfrentar esse problema em uma estrutura padrão de projeto Java, da seguinte maneira:
No Eclipse, preciso adicionar a pasta res para criar o caminho, no entanto, no Intellij, preciso marcar a pasta res como recursos, como mostra a captura de tela vinculada: clique com o botão direito do mouse na pasta res e marque como recursos .
fonte
Você não precisa especificar
PropertyConfigurator.configure("log4j.properties");
na sua classe Log4J, se você já definiu o log4j.properties na estrutura do seu projeto.No caso de Projeto Dinâmico da Web: -
Você precisa salvar seu log4j.properties em WebContent -> WEB-INF -> log4j.properties
Espero que isso possa ajudá-lo.
fonte