Konfigurasi lokasi logfile pada Spring MVC
Posted on July 15th, 2009 | by Endy Muhardin |Di mana kita harus menyimpan log output aplikasi kita? Tentunya kita ingin menggunakan lokasi yang dinamis sesuai dengan lokasi deployment. Misalnya, di Windows kita mungkin mendeploy aplikasi kita di
C:\Program Files\Apache Tomcat\webapps\aplikasi-saya
Sedangkan di Linux, kita mendeploy aplikasi di
/opt/apache-tomcat/webapps/aplikasi-saya
Dengan kemungkinan seperti di atas, bagaimana kita harus menulis konfigurasi log4j?
Mudah, bila kita menggunakan Spring MVC.
Kita bisa menggunakan Log4jConfigListener yang disediakan Spring. Class ini memungkinkan kita menggunakan variabel di konfigurasi log4j kita. Kita mendaftarkan class ini di dalam web.xml, sebelum ContextLoaderListener, seperti ini :
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Dengan adanya Log4jConfigListener ini, kita bisa menyebutkan lokasi konfigurasi log4j seperti ini :
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:artivisi-log4j.properties</param-value>
</context-param>
Isi artivisi-log4j.properties terlihat seperti ini :
# Konfigurasi kategori
log4j.rootLogger=INFO,fileout
# File output
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.file=${webapp.root.path}/WEB-INF/logs/application.log
log4j.appender.fileout.datePattern='.'yyyy-MM-dd
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.conversionPattern=%d [%t] %p (%F:%L) %m%n
Perhatikan konfigurasi log4j.appender.fileout.file. Kita menggunakan variabel ${webapp.root.path} yang akan diisi dengan nilai lokasi deployment aplikasi web kita. Variabel ${webapp.root.path} ini didefinisikan dalam web.xml sebagai berikut :
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webapp.root.path</param-value>
</context-param>
Dengan konfigurasi ini, kita dapat meletakkan log output kita di
C:\Program Files\Apache Tomcat\webapps\aplikasi-saya\WEB-INF\logs\application.log
bila kita mendeploy di Windows, dan di
/opt/apache-tomcat/webapps/aplikasi-saya/WEB-INF/logs/application.log
bila kita deploy di Linux.
Konfigurasi di atas bisa disederhanakan lagi bila kita mengikuti nilai default yang disediakan Spring, yaitu cukup seperti ini dalam web.xml :
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
Kemudian memberi nama file konfigurasi logger kita log4j.properties yang berada di top level dalam classpath, dan berisi seperti ini :
# Konfigurasi kategori
log4j.rootLogger=INFO,fileout
# File output
log4j.appender.fileout=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fileout.file=${webapp.root}/WEB-INF/logs/application.log
log4j.appender.fileout.datePattern='.'yyyy-MM-dd
log4j.appender.fileout.layout=org.apache.log4j.PatternLayout
log4j.appender.fileout.layout.conversionPattern=%d [%t] %p (%F:%L) %m%n
Nilai variabel ${webapp.root} secara default akan diisi dengan lokasi deployment tanpa harus mengkonfigurasi webAppRootKey
17 Responses to “Konfigurasi lokasi logfile pada Spring MVC”
By henrihnr on Jul 16, 2009 | Reply
Artikel bagus
Yang saya tau slama ini variable lokasi log output diset dari build.xml (deploy jg pakai ant). Btw diawal kok ditulis “bila kita menggunakan Spring MVC”, bukannya bs buat struts juga asal pakai Spring
By endy on Jul 21, 2009 | Reply
Hmm … kayaknya asal aplikasi web dan pakai Spring bisa sih. Soalnya kaitannya sama ApplicationContext, bukan ke DispatcherServlet.
By martha on Sep 4, 2009 | Reply
yaelah aneh2 aja malah debat OOT.
pak endy, thanks a lot, panduannya sangat membantu saya. saya pake kubuntu, vpnc, dan kvpnc utk konek ke KlikBCA Bisnis.
tadinya mentok di GroupPwd. wkt baca artikel anda saya sempet keder krn gak ada komputer windows yg bisa dimanfaatkan utk install dulu dan decrypt. untung-untungan saya teliti lagi file KlikBCA Bisnis.pcf bawaan CD installer… eh ternyata di situ ada GroupPwd yg blm didecrypt, tepat di atas enc_GroupPwd!
i guess i’m just lucky
anyway, sangat menyenangkan berhasil install VPN KlikBCA Bisnis di Kubuntu.
By martha on Sep 4, 2009 | Reply
ups maaf, salah posting komen. seharusnya itu di artikel ttg KlikBCA Bisnis.
By Bayu on Oct 3, 2009 | Reply
Mas endy, saya udah nyoba, tetapi file lognya tetep kosong, setelah itu saya coba pake konsole aja bisa, kemudian saya coba dengan aplikasi non web juga bisa…
Apa yang salah ya ….
By d1ve2blu3 on Oct 30, 2009 | Reply
mas,,kalo log4j bisa tidak menyimpan ke dua file log berbeda?
By endy on Nov 1, 2009 | Reply
Bisa kok.
Coba baca minibook Log4J
By d1ve2blu3 on Nov 2, 2009 | Reply
sudah bisa pak endy, terima kasih ya..:D
skarang kalau saya mau mau memisahkan. Misalnya kalo dari class A masuk ke file log A.log. Dan kalo dari class B masuk ke file log B.log
Saat ini berhasil membuat dua file log. tapi isi dari keduanya sama..
terima kasih,,
By Endy Muhardin on Nov 3, 2009 | Reply
ya tinggal dipisah di categorynya
By aulia j on Nov 5, 2009 | Reply
maaf nih pertayaanku tidak sesuai dengan topik diatas, pak gimana caranya/sintak koneksi java ke sql server ? soalnya sudah cari di google tidak mendapatkan jawaban yang pas, kalau koneksi ke oracle sudah bisa tapi saya dapat sumber databasenya sql server, driver untuk koneksi ke sql server bisa di dowload di mana ?
By aulia j on Nov 5, 2009 | Reply
tadi udah dapat info untuk koneksi sql server dengan java di : http://www.herongyang.com/jdbc/sqljdbc-jar-Installation.html
Mungkin saya kurang menguasai java jadi suka panik kalau bikin software pake java, search kemana-mana akhirnya nyasar ke blognya pak endy hehehe, maaf ya mengganggu
By d1ve2blu3 on Nov 24, 2009 | Reply
ya sukses pak endy,,
terima kasih banyak,,,
By josescalia on Dec 1, 2009 | Reply
Pagi Mas Endy…
Saya juga pernah bikin artikel soal log4j ini tapi ga pake spring…disini nih
http://josescalia.blogspot.com/2008/06/menambahkan-log4j-pada-web-aplikasi.html
By Mimi on Jan 14, 2010 | Reply
Maap ikut nimbrung. Saya biasanya menggunakan log4j.xml karena setting nya bisa lebih fleksible.
By Khaerul on Feb 5, 2010 | Reply
doh…
By batiknovita.com on Feb 8, 2010 | Reply
Makasih infonya…
Mohon diupdate lagi blognya.