Apache Tomcat 6'da günlükler $CATALINA_HOME/logs dizininde saklanmaktadır. Günlüğün yapılandırılması ise $CATALINA_HOME/conf/logging.properties dosyası üzerinden gerçeklenmektedir. Apache Tomcat günlük için tomcat-juli.jar paketini kullanmaktadır. İstenirse günlük oluşturmak için log4j kütüphanesi de kullanılabilinir. log4j kütüphanesi kullanılarak, günlükler veritabanı, syslog gibi farklı hedeflerde saklanabilir. Hem veritabanı hem de syslog servisi istemci-sunucu mimarisinde çalıştığı için günlükler merkezileştirilebilir. Böylelikle, çoklu tomcat sunucusunun olduğu bir yapıda, sunucuların yönetimi kolaylaşır, izlenebilirliği de iyileşir. Bunun yanında log4j ile ERROR yada üzeri seviyedeki günlüklerin e-posta olarak sistem ya da uygulama yöneticisine göndermek mümkün olabilir.
log4j ile günlükleri syslog servisinde toplamak için aşağıdaki adımları izlemek gerekir:
1. İlk olarak $CATALINA_BASE/lib dizininde log4j kütüphanesinin yapılandırma dosyasını (log4j.properties) oluşturuyoruz:
# Define all the appenders
log4j.appender.CATALINA=org.apache.log4j.net.SyslogAppender
log4j.appender.CATALINA.layout= org.apache.log4j.PatternLayout
log4j.appender.CATALINA.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CATALINA.SyslogHost=127.0.0.1
log4j.appender.CATALINA.Facility=local0
log4j.appender.CATALINA.threshold=DEBUG
log4j.appender.LOCALHOST=org.apache.log4j.net.SyslogAppender
log4j.appender.LOCALHOST.layout = org.apache.log4j.PatternLayout
log4j.appender.LOCALHOST.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.LOCALHOST.SyslogHost=127.0.0.1
log4j.appender.LOCALHOST.Facility=local0
log4j.appender.LOCALHOST.threshold=DEBUG
log4j.appender.MANAGER=org.apache.log4j.net.SyslogAppender
log4j.appender.MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.MANAGER.SyslogHost=127.0.0.1
log4j.appender.MANAGER.Facility=local0
log4j.appender.MANAGER.threshold=DEBUG
log4j.appender.HOST-MANAGER=org.apache.log4j.net.SyslogAppender
log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout
log4j.appender.HOST-MANAGER.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.HOST-MANAGER.SyslogHost=127.0.0.1
log4j.appender.HOST-MANAGER.Facility=local0
log4j.appender.HOST-MANAGER.threshold=DEBUG
log4j.appender.CONSOLE=org.apache.log4j.net.SyslogAppender
log4j.appender.CONSOLE.layout = org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern = %d [%t] %-5p %c- %m%n
log4j.appender.CONSOLE.SyslogHost=127.0.0.1
log4j.appender.CONSOLE.Facility=local0
log4j.appender.CONSOLE.threshold=DEBUG
# Configure which loggers log to which appenders
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=INFO, LOCALHOST
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager]=INFO, MANAGER
log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager]=INFO, HOST-MANAGER
2. log4j kütüphanesinin güncel sürümünü (log4j-1.2.9.jar) projenin sayfasından indirip $CATALINA_BASE/lib dizinine kopyalıyoruz.
3. Apache tomcat'in proje sayfasında "extras" bölümünden tomcat-juli.jar ve tomcat-juli-adapters.jar dosyalarını indiriyoruz. tomcat-juli.jar dosyasını $CATALINA_BASE/bin dizinine tomcat-juli-adapters.jar dosyasını ise $CATALINA_BASE/lib dizinine kopyalıyoruz. Bu dosyalar adı geçen dizinlerde mevcuttur, dolayısı ile üzerinlerine yazmanız gerekecektir.
4. syslog servisinin 2,3,4,5 çalışma seviyelerinde açık olduğundan emin olun:
[root@station1 lib]# chkconfig --list syslog
syslog 0:off 1:off 2:on 3:on 4:on 5:on 6:off
5. syslog servisinin yapılandırması için iki dosya vardır.
- /etc/syslog.conf dosyasına aşağıdaki satırı ekliyoruz:
local0.* /var/log/tomcat/messages.log
- /etc/sysconfig/syslog dosyasında SYSLOGD tanımının yapıldığı satırı aşağıdaki gibi düzenliyoruz:
6. Bu değişiklikleri yaptıktan sonra syslog servisini yeniden başlatıyoruz:
[root@station1 lib]# service syslog restart
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
7. Son olarak tomcat servisini başlatabiliriz.
Günlükleri veritabanında tutmak için MySQL sunucusunda tomcat_logs adında bir veritabanı yaratıyoruz:
Query OK, 1 row affected (0.02 sec)
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| tomcat_logs |
+--------------------+
3 rows in set (0.00 sec)
Günlüklerin saklanacağı tabloyu ise aşağıdaki create table ifadesi ile yaratıyoruz:
mysql> CREATE TABLE LOGS
-> (USER_ID VARCHAR(20) NOT NULL,
-> DATED VARCHAR(40) NOT NULL,
-> LOGGER VARCHAR(50) NOT NULL,
-> LEVEL VARCHAR(10) NOT NULL,
-> MESSAGE VARCHAR(1000) NOT NULL
-> );
Query OK, 0 rows affected (0.01 sec)
Yukarıdaki sıralanan adımlardan ilkinde verilen log4j.properties dosyasında net.SyslogAppender yerine jdbc.JDBCAppender yazıyoruz:
log4j.rootLogger=WARN, DB
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
log4j.appender.DB.URL=jdbc:mysql://localhost:3306/tomcat_logs
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=tomcat
log4j.appender.DB.password=tomcat
log4j.appender.DB.sql=INSERT INTO LOGS VALUES('%x','%d','%C','%p','%m')
Son adım olarak MySQL Jdbc sürücüsünü $CATALINA_BASE/lib dizinine kopyalamak gerekir.
No comments:
Post a Comment