wake-up-neo.net

Wo soll ich die Datei log4j.properties ablegen?

Ich habe ein Web-Service-Projekt mit netbeans 6.7.1 mit glassfish v2.1 geschrieben, log4j.properties in das Stammverzeichnis des Projekts gesetzt und Folgendes verwendet:

static Logger logger = Logger.getLogger(MyClass.class);

im Konstruktor:

PropertyConfigurator.configure("log4j.properties");

und in Funktionen:

logger.info("...");
logger.error("...");
// ...

aber es ist eine Fehlerinformation (eigentlich habe ich versucht, fast jedes Verzeichnis, das ich realisieren konnte, zu setzen):

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.

das Beispielprojekt könnte abgerufen werden von http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8

123
mono

Ich weiß, dass es etwas spät ist, diese Frage zu beantworten, und vielleicht haben Sie die Lösung bereits gefunden, aber ich poste die Lösung, die ich gefunden habe (nachdem ich viel gegoogelt habe), so dass es ein wenig helfen kann:

  1. Fügen Sie log4j.properties unter WEB-INF\Klassen des Projekts ein, wie zuvor in diesem Thread erwähnt.
  2. Fügen Sie log4j-xx.jar unter WEB-INF\lib ein
  3. Testen Sie, ob log4j geladen ist: Fügen Sie -Dlog4j.debug @ das Ende Ihrer Java-Optionen von Tomcat hinzu

Hoffe das wird helfen.

rgds

108
miss

Wie bereits erwähnt, sollte sich log4j.properties in einem Verzeichnis befinden, das im Klassenpfad enthalten ist. Ich möchte hinzufügen, dass in einem mavenized-Projekt ein guter Ort src/main/resources/log4j.properties

39
stivlo

Sie können den Speicherort der Konfigurationsdatei mit dem Argument VM angeben. -Dlog4j.configuration = "file:/C: /workspace3/local/log4j.properties"

26
Makatun

Sie müssen es im Stammverzeichnis ablegen, das Ihrem Ausführungskontext entspricht.

Beispiel:

    MyProject
       src
           MyClass.Java
           log4j.properties

Wenn Sie die Ausführung von einem anderen Projekt aus starten, muss diese Datei im Projekt zum Starten der Ausführung verwendet werden. Wenn beispielsweise ein anderes Projekt einige JUnit-Tests enthält, muss auch die Datei log4j.properties vorhanden sein.


Ich empfehle, log4j.xml anstelle von log4j.properties zu verwenden. Sie haben mehr Optionen, erhalten Unterstützung von Ihrer IDE und so weiter ...

25
KLE

Behalten Sie für ein Maven-basiertes Projekt Ihre log4j.properties in src/main/resources. Nichts weiter zu tun!

16
Byorn

Wenn Sie log4j.properties in src einfügen, müssen Sie die Anweisung 

PropertyConfigurator.configure("log4j.properties");

Es wird automatisch übernommen, da sich die Eigenschaftendatei im Klassenpfad befindet.

13
Ani

Versuchen:

PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));
10
Jhon M

Die Datei sollte sich im WEB-INF/classes-Verzeichnis befinden .. Diese Verzeichnisstruktur sollte in die WAR-Datei gepackt sein. 

9
Martin OConnor

Mein IDE ist NetBeans. Ich habe die Datei log4j.property wie in den Bildern gezeigt

Root

project's root folder

Web

web folder

WEB-INF

WEB-INF folder

Um diese Eigenschaftsdatei zu verwenden, sollten Sie diesen Code schreiben:

package example;

import Java.io.File;
import org.Apache.log4j.PropertyConfigurator;
import org.Apache.log4j.Logger;
import javax.servlet.*;
public class test {

public static ServletContext context;
static Logger log = Logger.getLogger("example/test");

public test() {

        String homeDir = context.getRealPath("/");
        File propertiesFile = new File(homeDir, "WEB-INF/log4j.properties");
        PropertyConfigurator.configure(propertiesFile.toString());
        log.info("This is a test");
    }
}

Sie können definieren statischer ServletContext-Kontext aus einer anderen JSP-Datei . Beispiel:

test.context = getServletContext(); 
test sample = new test(); 

Jetzt können Sie die Datei log4j.property in Ihren Projekten verwenden.

7
Ali Mamedov

Einige technisch korrekte, spezifische Antworten, die bereits bereitgestellt wurden, im Allgemeinen können sie sich jedoch irgendwo im Laufzeitklassenpfad befinden, d. H. Überall dort, wo Klassen von der JVM gesucht werden.

Dies kann das Verzeichnis/src in Eclipse oder das Verzeichnis WEB-INF/classes in Ihrer implementierten App sein. Am besten sollten Sie jedoch das Classpath-Konzept kennen und wissen, warum die Datei darin platziert wird. Klassen als "magisches" Verzeichnis.

5
Brian

Ich habe viel Zeit verbracht, um herauszufinden, warum das so ist log4j.properties Datei wird nicht gesehen. 
Dann fiel mir auf, dass es für das Projekt nur sichtbar war, wenn es in beiden war MeinProjekt/Ziel/Klassen / und MyProject/src/main/resources Ordner. 
Ich hoffe, es ist für jemanden nützlich. 
PS: Das Projekt war Maven-basiert.

5
RedCH

Ich habe festgestellt, dass Glassfish standardmäßig [Glassfish-Installationsverzeichnis] ​​\ glassfish\domains [Ihre Domäne]\als Standardarbeitsverzeichnis betrachtet. Sie können die Datei log4j.properties an diesem Speicherort ablegen und sie mit PropertyConfigurator in Ihrem Code initialisieren wie vorab erwähnt...

Properties props = System.getProperties();
System.out.println("Current working directory is " + props.getProperty("user.dir"));
PropertyConfigurator.configure("log4j.properties");
3
Durandal00

Wenn Sie ein Standard-Maven-Projekt mit Intellij eingerichtet haben, können Sie die log4j -Eigenschaftendatei einfach unter 

projekt/Src/Main/Ressourcen

Position der IntelliJ-log4j-Eigenschaften

1
Robert Squire

Ich weiß nicht, dass dies der richtige Weg ist. Aber es hat mein Problem gelöst. Die Datei log4j.properties in "Projektordner"/config und PropertyConfigurator.configure ("config // log4j.properties");

es funktioniert mit IDE, aber nicht, wenn Sie die JAR-Datei selbst ausführen. Wenn Sie die JAR-Datei selbst ausführen, kopieren Sie einfach die Datei log4j.properties in den Ordner, in dem sich die JAR-Datei befindet Eigenschaftendatei in demselben Verzeichnis läuft es gut.

1

Fügen Sie log4j.properties in classpath ..__ ein. Hier sind die 2 Fälle, in denen Sie den richtigen Ort -.__ finden können. 1. Für eine Webanwendung lautet der Klassenpfad/WEB-INF/classes. 

\WEB-INF      
    classes\
        log4j.properties
  1. Zum Testen von Haupt-/Komponententest ist der Klassenpfad das Quellverzeichnis 

    \Project\
       src\
          log4j.properties
    
1
Sharif

Eigentlich habe ich dieses Problem in einer Standard-Java-Projektstruktur wie folgt erlebt:

\myproject
    \src
    \libs
    \res\log4j.properties

In Eclipse muss ich den res-Ordner zum Build-Pfad hinzufügen. In Intellij muss ich den res-Ordner jedoch als Ressourcen markieren, wie der verknüpfte Screenshot zeigt: Rechtsklick auf den res-Ordner und als Ressourcen markieren.

0
Miracle Chan

Sie müssen PropertyConfigurator.configure("log4j.properties"); in Ihrer Log4J-Klasse nicht angeben, wenn Sie die log4j.properties bereits in Ihrer Projektstruktur definiert haben.

Im Falle von Web Dynamic Project: -

Sie müssen Ihre log4j.properties unter WebContent -> WEB-INF -> log4j.properties speichern

Ich hoffe das kann dir helfen.

0
Manish Patel

Es gibt viele Möglichkeiten, dies zu tun:

Weg1: Wenn Sie in maven project ohne Verwendung von PropertyConfigurator versuchen

Zuerst: Überprüfen Sie das Ressourcenverzeichnis unter scr/main

  if available,
       then: create a .properties file and add all configuration details.
  else
       then: create a directory named resources and a file with .properties     
write your configuration code/details.

folgt dem Screenshot:

 ![enter image description here

Weg2: Wenn Sie mit der Eigenschaftendatei für Java/maven-Projekt versuchen. PropertyConfigurator verwenden 

Platzieren Sie die Eigenschaftendatei an einer beliebigen Stelle im Projekt und geben Sie den richtigen Pfad an Sagen Sie: src/javaLog4jProperties/log4j.properties

statisch{

 PropertyConfigurator.configure("src/javaLog4jProperties/log4j.properties");

}

 enter image description here

Weg3: Wenn Sie versuchen, XML in Java/Maven-Projekt zu verwenden DOMConfigurator verwenden 

Platzieren Sie die Eigenschaftendatei an einer beliebigen Stelle im Projekt und geben Sie den korrekten Pfad an. _. Sagen Sie: src/javaLog4jProperties/log4j.xml

statisch{

 DOMConfigurator.configure("src/javaLog4jProperties/log4j.xml");

}

 enter image description here

0