# log4j - doppeltes Logging



## Sergeant_Pepper (7. Jul 2010)

Hallo,
diese beiden Klassen habe ich nahezu unverändert aus der log4j-Doku auf Apache log4j 1.2 - Short introduction to log4j kopiert:

```
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.Logger;

import de.forum.Bar;

public class LogTest
{
    // Define a static logger variable so that it references the
    // Logger instance named "LogTest".
    static Logger logger = Logger.getLogger(LogTest.class);
    
    public static void main(String[] args)
    {
        
        // Set up a simple configuration that logs on the console.
        BasicConfigurator.configure();

        logger.info("Entering application.");
        Bar bar = new Bar();
        bar.doIt();
        logger.info("Exiting application.");
    }    
}
```


```
package de.forum;

import org.apache.log4j.Logger;

public class Bar
{
    static Logger logger = Logger.getLogger(Bar.class);
    
    public void doIt()
    {
        logger.debug("Did it again!");
    }  
}
```

Warum wird diese Ausgabe erzeugt? Warum doppelte Loggings?

```
- Entering application.
0 [main] INFO LogTest  - Entering application.
- Exiting application.
0 [main] INFO LogTest  - Exiting application.
```


----------



## chriis (7. Jul 2010)

Vielleicht liegt das an deiner 'BasicConfigurator.configure();' 

Du kannst ja mal deine eigene Config(log4j.xml) erstellen.

[XML]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration>
	<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
		<param name="target" value="System.out"/>
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="(%p)[%c - %C{1} @ %L] (%m)%n"/>
		</layout>
	</appender>
	<root>
		<priority value="debug"></priority>
		<appender-ref ref="stdout"/>
	</root>
</log4j:configuration>[/XML]


----------



## nrg (7. Jul 2010)

ich hab das immer hart gecoded (edit: oder eben mit der konfigurations xml (s. vorposter) kommt drauf an, ob du es danach noch ändern willst):

z.b:


```
Logger logger = Logger.getRootLogger();
		
		SimpleLayout sl = new SimpleLayout();
		ConsoleAppender consoleAppender = new ConsoleAppender( sl );
		logger.addAppender( consoleAppender );
		
		PatternLayout pl = new PatternLayout( "%d{ISO8601} %-5p [%t] %c: %m%n" );
		FileAppender fileAppender = new FileAppender( pl, "c:/test.txt", true );
		logger.addAppender( fileAppender );
		
		logger.info( "das ist eine info" );
		logger.error( "das ist ein fehler" );
```


----------



## Sergeant_Pepper (7. Jul 2010)

chriis hat gesagt.:


> Vielleicht liegt das an deiner 'BasicConfigurator.configure();'  Du kannst ja mal deine eigene Config(log4j.xml) erstellen.



Die Doku bei Apache habe ich so verstanden, dass [c]BasicConfigurator.configure()[/c] genau das tut, was nrg in seinem Posting den Zeilen 1-5 tut.

Was mich jetzt verwirrt: beim Themenstart hatte ich die beiden Klassen einem vorhandenen Eclipse-Projekt zugeordnet, aber völlig isoliert von den übrigen Klassen. Da kam es dann zu der merkwürdigen Ausgabe.
Eben habe ich ein völlig neues Projekt nur für diesen Test eingerichtet, und da läuft es normal


----------



## nrg (8. Jul 2010)

das einzige, was mir bis jetzt "merkwürdig" vorkam bzgl. Logging und java, war die Logging API von Java Standard. Mit log4j habe ich dagegen nur gute Erfahrungen gemacht...  Std kannste dagegen echt gegen die wand fahren 

edit: ziehmlich viel "gegen" :autsch:. naja ist spät. deutschland hat verloren  gn8


----------

