2012-02-09 72 views
5

Sto provando a configurare il mio tomcat in file di registro di rollover una volta raggiunto il limite di dimensione. Sto eseguendo Tomcat come servizio Windows e sto reindirizzando tutto il mio stdout su catalina.log. Ecco come ho configurato logging.properties per impostare un limite di dimensioni. Ma non sta funzionando.Come configurare tomcat su file catalina.log rollover

logging.properties

handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

############################################################ 
# Handler specific properties. 
# Describes specific configuration info for Handlers. 
############################################################ 

1catalina.org.apache.juli.FileHandler.level = FINE 
1catalina.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
1catalina.org.apache.juli.FileHandler.prefix = catalina. 
1catalina.org.apache.juli.FileHandler.limit = 100000 # size 100kb 
1catalina.org.apache.juli.FileHandler.count = 5 


2localhost.org.apache.juli.FileHandler.level = FINE 
2localhost.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
2localhost.org.apache.juli.FileHandler.prefix = localhost. 

3manager.org.apache.juli.FileHandler.level = FINE 
3manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
3manager.org.apache.juli.FileHandler.prefix = manager. 

4host-manager.org.apache.juli.FileHandler.level = FINE 
4host-manager.org.apache.juli.FileHandler.directory = e:/apache-tomcat/logs/server_111-1001 
4host-manager.org.apache.juli.FileHandler.prefix = host-manager. 

java.util.logging.ConsoleHandler.level = FINE 
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter 


############################################################ 
# Facility specific properties. 
# Provides extra control for each logger. 
############################################################ 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = 3manager.org.apache.juli.FileHandler 

org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager].handlers = 4host-manager.org.apache.juli.FileHandler 

# For example, set the com.xyz.foo logger to only log SEVERE 
# messages: 
#org.apache.catalina.startup.ContextConfig.level = FINE 
#org.apache.catalina.startup.HostConfig.level = FINE 
#org.apache.catalina.session.ManagerBase.level = FINE 
#org.apache.catalina.core.AprLifecycleListener.level=FINE 

Ma 1catalina.org.apache.juli.FileHandler.limit = 100000 non sembra funzionare

+0

Perché dovresti anche scrivere nulla al stdout in un'applicazione web ?! Questo ucciderà le tue prestazioni se avrai qualche tipo di carico di cui parlare. Non puoi usare log4j o qualche altra libreria di logging? – Olaf

+0

Perché, quando si esegue tomcat come servizio, i messaggi della console vanno direttamente a stdout.log. – Srinivas

+0

Esiste comunque la possibilità di ruotare stdout.log atlease – Srinivas

risposta

8

org.apache.juli.FileHandler non supporta la rotazione in base alle dimensioni del file e fa non avere le proprietà limit e count che si sta tentando di impostare (see docs). Invece, è possibile utilizzare lo standard Java java.util.logging.FileHandler che supporta la rotazione basata sulle dimensioni. È necessario modificare le seguenti righe nella configurazione:

handlers = 1catalina.java.util.logging.FileHandler, 2localhost.org.apache.juli.FileHandler, 3manager.org.apache.juli.FileHandler, 4host-manager.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 

.handlers = 1catalina.java.util.logging.FileHandler, java.util.logging.ConsoleHandler 

Si noti inoltre che Java FileHandler è configurato in modo leggermente diverso rispetto Tomcat FileHandler

1catalina.java.util.logging.FileHandler.level = FINEST 
1catalina.java.util.logging.FileHandler.pattern = <your log dir>/catalina%g.log 
1catalina.java.util.logging.FileHandler.limit = 100000 
1catalina.java.util.logging.FileHandler.count = 5 
1catalina.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter 

Tuttavia, non sono sicuro che il reindirizzamento standard out al file scritto dal registratore funzionerà bene e ti aiuterà a ottenere ciò che desideri.

1

Secondo il Official Tomcat 7 documentation:


public class FileHandler estende java.util.logging.Handler

Attuazione della Handler che aggiunge i messaggi di log in un file denominato {prefix} {data} {suffisso} in una directory configurata.

Le seguenti proprietà di configurazione sono disponibili:

  • directory - La directory dove creare il file di log. Se il percorso non è assoluto, è relativo alla directory di lavoro corrente dell'applicazione. I file di configurazione di Apache Tomcat solito specificare un percorso assoluto per questa proprietà, $ {} catalina.base/logs valore di default: i registri

  • ruotabile - Se fosse vero, il file di log verrà ruotata sulla prima scrittura dopo la mezzanotte e il nome file sarà {prefisso} {data} {suffisso}, dove data è aaaa-MM-gg. Se false, il file non verrà ruotato e il nome file sarà {prefisso} {suffisso}. Valore predefinito: true

  • prefisso

    - La parte principale del nome del file di registro. Valore predefinito: juli.

  • suffisso

    - La parte finale del nome del file di registro. Valore predefinito: .log

  • bufferSize - Configura il buffering. Il valore 0 utilizza il buffering di default del sistema (in genere verrà utilizzato un buffer 8K). Un valore di obbliga un autore a scrivere su ogni scrittura di registro.Un valore> 0 utilizza un BufferedOutputStream con il valore definito ma si noti che verrà applicato anche il buffering predefinito del sistema . Valore predefinito: -1

  • codifica

    - Set di caratteri utilizzato dal file di registro. Valore predefinito: stringa vuota, che significa utilizzare il set di caratteri predefinito del sistema.

  • Livello

    - La soglia del livello per questo gestore. Vedi la classe java.util.logging.Level per i possibili livelli. Valore predefinito: ALL

  • filter - Il nome della classe di implementazione java.util.logging.Filter per questo gestore. Valore predefinito: unset

  • formatter - Il nome della classe di implementazione java.util.logging.Formatter per questo gestore. Valore di default: java.util.logging.SimpleFormatter