2012-02-09 15 views
5

Próbuję skonfigurować mój tomcat do plików dziennika najazdu po osiągnięciu limitu rozmiaru. Używam programu tomcat jako usługi systemu Windows i przekierowuję wszystkie moje stdout do catalina.log. W ten sposób skonfigurowałem metodę logging.properties, aby ustawić limit rozmiaru. Ale to nie działa.Jak skonfigurować tomcat do przerzucania plików catalina.log

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 

Ale 1catalina.org.apache.juli.FileHandler.limit = 100000 nie wydaje się działać

+0

Dlaczego nawet napisać coś do stdout w aplikacji internetowej ?! To zabije twoją wydajność, jeśli pojawi się jakikolwiek ładunek do opowiedzenia. Nie możesz użyć log4j lub innej biblioteki logowania? – Olaf

+0

Ponieważ podczas uruchamiania tomcat jako usługi komunikaty konsoli przechodzą bezpośrednio do stdout.log. – Srinivas

+0

Czy mimo to mogę obrócić stdout.log atlease – Srinivas

Odpowiedz

8

org.apache.juli.FileHandler nie umożliwia obrót na podstawie rozmiaru pliku i robi nie mają właściwości limit i count, które próbujesz ustawić (see docs). Zamiast tego można użyć standardowego Java java.util.logging.FileHandler obsługującego rotację opartą na wielkości. należy zmienić następujące linie w konfiguracji:

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 

Należy również pamiętać, że Java jest skonfigurowany FileHandler nieco inaczej niż 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 

Jednak nie jestem pewien, że przekierowuje standardowe wyjście do pliku napisane przez logger będzie działać dobrze i pomóc osiągnąć to, co chcesz.

1

Według Official Tomcat 7 documentation:


public class FileHandler rozciąga java.util.logging.Handler

Realizacja Handler, która dołącza komunikaty dziennika do pliku o nazwie {prefix} {date} {przyrostek} w skonfigurowanym katalogu.

następujące właściwości konfiguracyjne dostępne są:

  • katalog - Katalog, w którym, aby utworzyć plik dziennika. Jeśli ścieżka nie jest bezwzględna, jest ona względna w stosunku do bieżącego katalogu roboczego aplikacji. Pliki konfiguracyjne Apache Tomcat zwykle określić bezwzględną ścieżkę dla tego obiektu $ {catalina.base}/Logi Wartość domyślna: kłody

  • obrotowy - Jeśli to prawda, to plik logu zostanie obrócony na Pisać po północy a nazwa pliku będzie {przedrostek} {data} {przyrostek}, , gdzie data to rrrr-MM-dd. Jeśli false, plik nie zostanie obrócony i nazwa pliku będzie {prefix} {przyrostek}. Wartość domyślna: true

  • prefiks - wiodąca część nazwy pliku dziennika. Wartość domyślna: juli.

  • sufiks - Końcowa część nazwy pliku dziennika. Wartość domyślna: .log

  • bufferSize - Konfiguruje buforowanie. Wartość 0 używa domyślnego buforowania systemu (zwykle używany będzie bufor 8K). Wartość wymusza pisanie równo z każdym zapisaniem dziennika.Wartość> 0 używa BufferedOutputStream z określoną wartością, ale należy pamiętać, że domyślne buforowanie systemu zostanie również zastosowane. Wartość domyślna: -1

  • Kodowanie

    - Zestaw znaków używany w pliku dziennika. Wartość domyślna: pusty ciąg znaków, co oznacza użycie domyślnego zestawu znaków systemowych.

  • poziom - Próg poziomu dla tego Handlera. Zobacz klasę java.util.logging.Level dla możliwych poziomów. Wartość domyślna: ALL

  • Filtr

    - Nazwa klasy implementacji java.util.logging.Filter dla tego programu obsługi. Wartość domyślna: unset

  • formatter - Nazwa klasy implementacji java.util.logging.Formatter dla tego programu obsługi. Wartość domyślna: java.util.logging.SimpleFormatter

Powiązane problemy