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

  1. 17 Responses to “Konfigurasi lokasi logfile pada Spring MVC”

  2. 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 :D

  3. By endy on Jul 21, 2009 | Reply

    Hmm … kayaknya asal aplikasi web dan pakai Spring bisa sih. Soalnya kaitannya sama ApplicationContext, bukan ke DispatcherServlet.

  4. By martha on Sep 4, 2009 | Reply

    yaelah aneh2 aja malah debat OOT. :P

    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.

  5. By martha on Sep 4, 2009 | Reply

    ups maaf, salah posting komen. seharusnya itu di artikel ttg KlikBCA Bisnis.

  6. 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 ….

  7. By d1ve2blu3 on Oct 30, 2009 | Reply

    mas,,kalo log4j bisa tidak menyimpan ke dua file log berbeda?

  8. By endy on Nov 1, 2009 | Reply

    Bisa kok.
    Coba baca minibook Log4J

  9. 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,,

  10. By Endy Muhardin on Nov 3, 2009 | Reply

    ya tinggal dipisah di categorynya

    
    log4j.logger.com.artivisi = file1
    log4j.logger.org.springframework = file2
    
    log4j.appender.fileout.file1=artivisi.log
    log4j.appender.fileout.file2=spring.log
    
  11. 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 ?

  12. 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

  13. By d1ve2blu3 on Nov 24, 2009 | Reply

    ya sukses pak endy,,

    terima kasih banyak,,,

  14. 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

  15. By Mimi on Jan 14, 2010 | Reply

    Maap ikut nimbrung. Saya biasanya menggunakan log4j.xml karena setting nya bisa lebih fleksible.

  16. By Khaerul on Feb 5, 2010 | Reply

    doh…

  17. By batiknovita.com on Feb 8, 2010 | Reply

    Makasih infonya…
    Mohon diupdate lagi blognya.

Post a Comment