Basic CRUD Web Aplikasi Menggunakan SpringFramework-MVC, Freemarker, Hibernate dan JPA - Konfigurasi Ehcache dan Logging

Article Index

Konfigurasi Ehcache dan Logging

Pada Project Explorer pilih folder src/main/resources, dan 2 buat file baru. Beri nama file tersebut ehcache.xml dan log4j2.xml.

Sunting file src/main/resources/ehcache.xml seperti kode berikut ini:

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">

    <!-- Location of persistent caches on disk -->
    <diskStore path="java.io.tmpdir/EhCacheStores"/>

    <defaultCache eternal="false" maxEntriesLocalHeap="100000" timeToIdleSeconds="600" timeToLiveSeconds="1800"
                  overflowToDisk="false" memoryStoreEvictionPolicy="LFU"/>

    <cache name="org.fajarapps.jpacrud.entity.Person" eternal="false" maxEntriesLocalHeap="1000"
           timeToIdleSeconds="600" timeToLiveSeconds="3600"
           overflowToDisk="false" memoryStoreEvictionPolicy="LFU"/>

    <cache name="org.fajarapps.jpacrud.entity.Department" eternal="false" maxEntriesLocalHeap="1000"
           timeToIdleSeconds="600" timeToLiveSeconds="3600"
           overflowToDisk="false" memoryStoreEvictionPolicy="LFU"/>

    <cache name="org.hibernate.cache.internal.StandardQueryCache" eternal="false"
           maxEntriesLocalHeap="50000" timeToIdleSeconds="600" timeToLiveSeconds="1800"
           overflowToDisk="false" memoryStoreEvictionPolicy="LFU"/>

    <cache name="org.hibernate.cache.spi.UpdateTimestampsCache" maxEntriesLocalHeap="10000"
           eternal="true" memoryStoreEvictionPolicy="LFU">
        <persistence strategy="localTempSwap"/>
    </cache>

</ehcache>

Sunting file src/main/resources/log4j2.xml seperti kode berikut ini:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p [%c{1}:%L] - %m%n"/>
        </Console>
        <RollingRandomAccessFile name="FileRolling" fileName="../logs/jpacrud.log" immediateFlush="false"
                                 filePattern="../logs/jpacrud-%d{dd-MM-yyyy}.log.gz">
            <PatternLayout>
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p [%c{1}:%L] - %m%n</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy/>
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="7"/>
        </RollingRandomAccessFile>
    </Appenders>

    <Loggers>
        <AsyncLogger name="org.fajarapps.jpacrud.domain" level="debug" includeLocation="true"/>
        <AsyncLogger name="org.hibernate.jdbc" level="debug" includeLocation="true"/>
        <AsyncLogger name="org.hibernate.jpa" level="debug" includeLocation="true"/>
        <AsyncLogger name="org.hibernate.sql" level="debug" includeLocation="true"/>
        <AsyncLogger name="org.hibernate.type" level="debug" includeLocation="true"/>
        <AsyncLogger name="org.fajarapps.jpacrud" level="info" includeLocation="true">
            <AppenderRef ref="FileRolling"/>
        </AsyncLogger>
        <AsyncLogger name="com.zaxxer.hikari" level="info" includeLocation="true">
            <AppenderRef ref="FileRolling"/>
        </AsyncLogger>
        <AsyncLogger name="org.hibernate" level="info" includeLocation="true">
            <AppenderRef ref="FileRolling"/>
        </AsyncLogger>
        <AsyncLogger name="org.springframework" level="info" includeLocation="true">
            <AppenderRef ref="FileRolling"/>
        </AsyncLogger>
        <AsyncLogger name="org.apache" level="info" includeLocation="true">
            <AppenderRef ref="FileRolling"/>
        </AsyncLogger>
        <Root level="info" includeLocation="true">
            <AppenderRef ref="STDOUT"/>
        </Root>
    </Loggers>
</Configuration>

Kini project telah selesai dikonfigurasi. Walaupun pada IDEA editor terdapat beberapa warning yang menyatakan error, jangan kuatir. Hal itu dikarenakan beberapa file ataupun folder belumlah dibuat. Nanti jika folder ataupun file yang dibutuhkan telah selesai dibuat, maka tanda tersebut akan hilang dengan sendirinya.

Sebagai gambaran tentang struktur direktori project dapat dilihat pada gambar berikut.

Jika ada sub-folder dari src/main/webapp yang belum dibuat maka jangan lupa untuk dibuat dari sekarang.