/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
log4j spørgsmål - al uddata fra en given k~
Fra : Thorbjoern Ravn Ande~


Dato : 16-02-05 14:16

Jeg har et problem med en applikation der foretager en del
kommunikation som jeg gerne vil logge, og hertil vil log4j være fin og
det har jeg kørende.

Mit problem er at jeg gerne vil have disse i en fil for sig selv og
ikke blandet sammen med resten, men jeg kan ikke lige lure hvordan det
skal gøres.

Mit nuværende forsøg ser således ud:
____
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %c %x - %m%n

# Ignore what we don't want
log4j.logger.org.displaytag=WARN
log4j.logger.org.apache=WARN

# Log protocol data to a rolling file
log4j.category.com.xyzzy.Connection=,PROTOCOL
log4j.appender.PROTOCOL=org.apache.log4j.RollingFileAppender
log4j.appender.A.File=protocol.log
log4j.appender.PROTOCOL.MaxFileSize=10MB
log4j.appender.PROTOCOL.MaxBackupIndex=3
log4j.appender.PROTOCOL.layout=org.apache.log4j.TTCCLayout
log4j.appender.PROTOCOL.layout.ContextPrinting=enabled
log4j.appender.PROTOCOL.layout.DateFormat=ISO8601
log4j.appender.PROTOCOL.Append=true
___

og det har ikke den ønskede virkning så vidt jeg kan se.

Indtil jeg kan få log4j manualen hjem, er der så nogen der lige kan
give et praj til hvordan jeg får al uddata fra com.xyzzy.Connection
klassen lagt for sig?

På forhånd tak.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

 
 
Finn Nielsen (16-02-2005)
Kommentar
Fra : Finn Nielsen


Dato : 16-02-05 17:53

Thorbjoern Ravn Andersen wrote:
> Jeg har et problem med en applikation der foretager en del
> kommunikation som jeg gerne vil logge, og hertil vil log4j være fin og
> det har jeg kørende.
>
> Mit problem er at jeg gerne vil have disse i en fil for sig selv og
> ikke blandet sammen med resten, men jeg kan ikke lige lure hvordan det
> skal gøres.
>
> Mit nuværende forsøg ser således ud:
> ____
[snip]
> ___
>
> og det har ikke den ønskede virkning så vidt jeg kan se.
>
> Indtil jeg kan få log4j manualen hjem, er der så nogen der lige kan
> give et praj til hvordan jeg får al uddata fra com.xyzzy.Connection
> klassen lagt for sig?
>
> På forhånd tak.

Hvis du kan leve med at konvertere din log4j configuration til
xml-formatet (som jeg selv synes er betydelig mere læseligt) så har du
her et eksempel der gerne skulle gøre det ønskede:

-------------log4j.xml------------------------
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "./log4j.dtd">
<!--
   Copy this to log4j.xml and edit to suite your liking
-->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

   <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
   <param name="ConversionPattern" value="%d{HH:mm:ss} [%t] %-5p
%-25c{7}: %m%n" />
         <!-- alternative conversion pattern
         <param name="ConversionPattern" value="%d{HH:mm:ss} [%t] %-5p
%-25c{5}: %m%n" />
         -->
      </layout>
   </appender>

<appender name="FILE" class="org.apache.log4j.DailyRollingFileAppender">
<param name="DatePattern" value="'.'yyyy-MMM" />
<param name="File" value="logs/classification.log" />
<param name="Append" value="true" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{HH:mm:ss} [%t] %-5p
%-25c{7}: %m%n" />
</layout>
</appender>

   <logger name="dk.rhos.classification.TestJunitTests">
      <level value="info" />
      <appender-ref ref="FILE"/>
   </logger>

   <logger name="org.apache">
      <level value="error" />
      <appender-ref ref="STDOUT"/>
   </logger>

<root>
<priority value="debug" />
<appender-ref ref="STDOUT" />
</root>

</log4j:configuration>
-------------log4j.xml------------------------

--
Finn Nielsen - http://www.finnnielsen.dk/

Email: Fjern "zero." fra min adresse og erstat ".invalid" med ".dk".

Thorbjoern Ravn Ande~ (02-03-2005)
Kommentar
Fra : Thorbjoern Ravn Ande~


Dato : 02-03-05 11:57

Finn Nielsen <spamtrap2@zero.zznyyd.invalid> writes:

> Hvis du kan leve med at konvertere din log4j configuration til
> xml-formatet (som jeg selv synes er betydelig mere læseligt) så har du
> her et eksempel der gerne skulle gøre det ønskede:

Det viste sig at jeg - som mange andre novicer jævnfør manualen - ikke
var klar over at appendere er additive, hvis man ikke slår det fra med
<logger ... additivity="false">.

Det spiller nu. Tak for svar.

--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn/

torben (16-02-2005)
Kommentar
Fra : torben


Dato : 16-02-05 22:38

Thorbjoern Ravn Andersen wrote:
> Jeg har et problem med en applikation der foretager en del
> kommunikation som jeg gerne vil logge, og hertil vil log4j være fin og
> det har jeg kørende.
>
> Mit problem er at jeg gerne vil have disse i en fil for sig selv og
> ikke blandet sammen med resten, men jeg kan ikke lige lure hvordan det
> skal gøres.
>
> Mit nuværende forsøg ser således ud:
> ____
> # Set root logger level to DEBUG and its only appender to A1.
> log4j.rootLogger=DEBUG, A1
>
> # A1 is set to be a ConsoleAppender.
> log4j.appender.A1=org.apache.log4j.ConsoleAppender
>
> # A1 uses PatternLayout.
> log4j.appender.A1.layout=org.apache.log4j.PatternLayout
> log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %c %x - %m%n
>
> # Ignore what we don't want
> log4j.logger.org.displaytag=WARN
> log4j.logger.org.apache=WARN
>
> # Log protocol data to a rolling file
> log4j.category.com.xyzzy.Connection=,PROTOCOL
> log4j.appender.PROTOCOL=org.apache.log4j.RollingFileAppender
> log4j.appender.A.File=protocol.log
> log4j.appender.PROTOCOL.MaxFileSize=10MB
> log4j.appender.PROTOCOL.MaxBackupIndex=3
> log4j.appender.PROTOCOL.layout=org.apache.log4j.TTCCLayout
> log4j.appender.PROTOCOL.layout.ContextPrinting=enabled
> log4j.appender.PROTOCOL.layout.DateFormat=ISO8601
> log4j.appender.PROTOCOL.Append=true
> ___
>
> og det har ikke den ønskede virkning så vidt jeg kan se.
>
> Indtil jeg kan få log4j manualen hjem, er der så nogen der lige kan
> give et praj til hvordan jeg får al uddata fra com.xyzzy.Connection
> klassen lagt for sig?
>
> På forhånd tak.

Det kan gøres på minimmum to måder:

1. Når der skal logges fra protocolen ændres destinationen på de
tidspunkt via log4j api'et. dette er nok ikke særlig interessant

2. Alternativt definerer du to loggere i stil med:

log4j.appender.A1=org.apache.log4j.RollingFileAppender
log4j.appender.A1.file=normalLog


log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.file=protocol.log

log4j.logger.MORMAL=INFO, A1

log4j.logger.PROTOCOL=INFO, A2

Fra java bruges Logger.getLogger("NORMAL"), når der skal logges til den
"normale" log. Og loggeren Logger.getLogger("PROTOCOL") benyttes når
kommunikationen skal logges.


Torben

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste