Tulisan ini merupakan tulisan lanjutan dari bagian sebelumnya (tulisan sebelumnya bisa kalian lihat DI SINI), dimana saya membahas mengenai Security Audit Log pada EJBCA. Nah, pada kesempatan kali ini, masih soal log, saya ingin membahas mengenai System Log.
System log pada EJBCA mencatat semua events yang menarik untuk dipantau, seperti menoak permintaan yang tidak valid, pembacaan profile, dan lain-lain. System log dapat mencatat beberapa tingkatan log yang berbeda untuk menyediakan informasi tambahan tentang events yang tidak terkait dengan keamanan.
System Log menggunakan Log4J logging framework dengan beberapa tingkatan log yang dapat dikonfigurasi:
- FATAL
Events berbahaya (katastropik) yang tercatat oleh JVM atau application server. Sistem ini kemungkinan besar dalam keadaan yang sangat buruk dan atau tidak dapat digunakan - ERROR
Kesalahan yang seharusnya membuat Staff IT datang untuk melihat ke dalam sistem. Hal tersebut bisa berakibat fatal sehingga sistem berhenti bekerja.
Contoh Log Error - WARNING
Peringatan tentang kesalahan konfigurasi. Pada level ini, sistem masih tetap dapat berfungsi, tetapi fungsionalitas bisa menurun.
Contoh Log Warning - INFO
Berisi pesan informasi yang menarik untuk keperluan pemantauan dan keperluan statistik. Ini merupakan level default.

Contoh Log Info - DEBUG
Berfungsi untuk melihat detil dari apa yang sedang terjadi di dalam sistem. - TRACE
Melacak informasi yang dapat berguna untuk mendeteksi bug atau kesalahan kecil pada konfigurasi. Keluaran dari level status ini akan menunjukkan secara terperinci apa yang terjadi pada sistem.
Jika Security Audit Log menyimpan informasinya di dalam database, maka System Log menyimpannya dalam file log. Secara default, System log juga berisi Security Audit Log, namun hal tersebut bisa dikonfigurasi menjadi seperti berikut:
- Hanya menyimpan Audit Log di dalam database.
- Menyimpan Audit Log di dalam database dan juga log file.
- Menyimpan Audit Log hanya di dalam log file.
Konfigurasi System Log tergantung dari application server yang digunakan. Sangat direkomendasikan untuk mengatur log ke dalam application server seperti JBoss.
Dalam JBoss, kita bisa dengan mudah mengaktifkan dan menonaktifkan log debug dan kembali ke log info saat Runtime. untuk mengkonfigurasi DEBUG untuk pertama kali, jalankan perintah berikut pada JBOSS CLI:
/subsystem=logging/logger=org.ejbca:add /subsystem=logging/logger=org.cesecore:add /subsystem=logging/logger=org.ejbca:write-attribute(name=level, value=DEBUG) /subsystem=logging/logger=org.cesecore:write-attribute(name=level, value=DEBUG)

Untuk mengubahnya kembali DEBUG menjadi INFO, seperti contohnya ketika production dimulai, jalankan perintah berikut:
/subsystem=logging/logger=org.ejbca:write-attribute(name=level, value=INFO) /subsystem=logging/logger=org.cesecore:write-attribute(name=level, value=INFO)

pada JBoss 7/EAP 6/WildFLy 10, kalian bisa mengkonfigurasi log pada standalone.xml.
Berikut ini contoh konfigurasi untuk log yang sedikit lebih advance. Pencatatan log EJBCA dilakukan ke dalam ejbca.log yang akan terus bertambah setiap kali ukuran lognya mencapai 32MB dan maksimum hingga 31 file log saja:
<subsystem xmlns="urn:jboss:domain:logging:3.0">
<console-handler name="CONSOLE">
<level name="INFO"/>
<formatter>
<named-formatter name="COLOR-PATTERN"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<formatter>
<named-formatter name="PATTERN"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
<append value="true"/>
</periodic-rotating-file-handler>
<size-rotating-file-handler name="EJBCAFILE" autoflush="true">
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="ejbca.log"/>
<rotate-size value="32M"/>
<max-backup-index value="31"/>
<append value="true"/>
</size-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.jboss.as.config">
<level name="DEBUG"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<logger category="org.ejbca">
<level name="DEBUG"/>
<handlers>
<handler name="EJBCAFILE"/>
</handlers>
</logger>
<logger category="org.cesecore">
<level name="DEBUG"/>
<handlers>
<handler name="EJBCAFILE"/>
</handlers>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
<formatter name="PATTERN">
<pattern-formatter pattern="%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
<formatter name="COLOR-PATTERN">
<pattern-formatter pattern="%K{level}%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n"/>
</formatter>
</subsystem>
Logging ke Syslog
Kalian bisa mengkonfigurasi JBoss atau WildFly untuk mencatatnya ke dalam syslog. Ada banyak konfigurasi yang bisa kalian gunakan.
Berikut ini contoh JBoss EAP7/WildFly 10+ untuk mencatat log ke dalam remote server log, dengan menggunakan TCP port 514. Kalian bisa mengubah pengaturannya agar sesuai dengan server kalian:
<custom-handler name="SYSLOGTCP" class="org.jboss.logmanager.handlers.SyslogHandler" module="org.jboss.logmanager"> <level name="INFO"/> <encoding value="ISO-8859-1"/> <formatter> <pattern-formatter pattern="%-5p [%c] (%t) %s%E%n"/> </formatter> <properties> <property name="appName" value="EJBCA"/> <property name="facility" value="LOCAL_USE_5"/> <property name="serverHostname" value="syslogserver-at.mydomain.com"/> <property name="hostname" value="-"/> <property name="port" value="514"/> <property name="syslogType" value="RFC5424"/> <property name="protocol" value="TCP"/> <property name="messageDelimiter" value="-"/> <property name="useMessageDelimiter" value="true"/> </properties> </custom-handler>
*****
Itu tadi sedikit mengenai System Log. Sampai jumpa pada tulisan selanjutnya.
