Java >> Java tutorial >  >> Tag >> Log4j

Log4J opretter logfil, men skriver ikke til den

Outputtet ser ud til at være af standardformatet, som Javas standard logningsramme (JUL) ville udsende.

Så der er to muligheder (som kommer til at tænke på):

  1. Din kode importerer java.util.logging.Logger , i stedet for org.apache.log4j.Logger .
  2. Der findes et bibliotek af en slags i din klassesti, der opsnapper Log4J-opkald og konverterer dem til JUL-opkald.

Jeg havde samme problem som dig. Filen blev oprettet, men uden nogen logs i den bare i konsollen. Og det var på grund af forkerte afhængigheder i maven project i mit tilfælde.

Min log4j.properties filen var:

# Root logger option
log4j.rootLogger=DEBUG, file

# Direct log messages to a log file
# configuration to print into file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=10
# Define the layout for file appender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=[%t] %-5p %c %x - %m%n
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Set the name of the file
log4j.appender.file.File=C:\\log\\logging.log
# Set the append to false, overwrite
log4j.appender.file.Append=false

Og jeg brugte i POM:

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.6.2</version>
</dependency>

<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>

Ja, den oprettede en fil til mig, hvor jeg havde brug for den, men logfiler var i konsollen. Så ændrede jeg det til en anden afhængighed som:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>

Og jeg fik det endelig i fil i stedet for konsol. Selv uden nogen eksplicitte kommandoer som PropertyConfigurator.configure() .


Java tag