<?xml version="1.0" encoding="UTF-8"?>
<configuration scanPeriod="10 seconds" scan="false" debug="false">
	<jmxConfigurator />
	<!-- Pour éviter les problèmes de perf avec JUL -->
	<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator"/>
	
	<!-- Pour qu'il n'y ait pas de problème lorsque logback n'est pas utilisé depuis un tomcat -->
	<if condition='isDefined("catalina.home")'>
        <then>
            <property name="log.folder" value="${catalina.home}/logs"/>
        </then>
        <else>
            <property name="log.folder" value="./target/logs"/>
        </else>
    </if>

	<!-- ============================== -->
    <!-- Append messages to the console -->
    <!-- ============================== -->
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{"HH:mm:ss,SSS"} %-5p [%c] %m%n</pattern>
        </encoder>
    </appender>
    
    <!-- ================================= -->
	<!-- Preserve messages in a local file -->
	<!-- ================================= -->
	<appender name="fileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.folder}/myapp.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>${log.folder}/myapp.log.%i</fileNamePattern>
			<minIndex>1</minIndex>
			<maxIndex>10</maxIndex>
		</rollingPolicy>
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>20MB</maxFileSize>
		</triggeringPolicy>
		<encoder>
			<pattern>%d %X{sessionID} %-5p [%c] %m%n</pattern>
		</encoder>
	</appender>

	<!-- ================================= -->
	<!-- Logger des request YYY            -->
	<!-- ================================= -->
	<appender name="wsAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.folder}/myapp-WS-YYY.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>${log.folder}/myapp-WS-YYY.log.%i</fileNamePattern>
			<minIndex>1</minIndex>
			<maxIndex>10</maxIndex>
		</rollingPolicy>
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>20MB</maxFileSize>
		</triggeringPolicy>
		<filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
      		<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
        		<expression>return message.contains("RequeteYYY");</expression>
      		</evaluator>
      		<OnMismatch>NEUTRAL</OnMismatch>
      		<OnMatch>ACCEPT</OnMatch>
    	</filter>
    	<filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
      		<evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator -->
        		<expression>return message.contains("ReponseYYY");</expression>
      		</evaluator>
      		<OnMismatch>DENY</OnMismatch>
      		<OnMatch>ACCEPT</OnMatch>
    	</filter>
		<encoder>
			<pattern>%d %X{sessionID} %-5p %m%n</pattern>
		</encoder>
	</appender>
	
	<!-- Loggeur specifique pour le profiling -->
	<!-- ================================= -->
	<!-- Preserve messages in a local file -->
	<!-- ================================= -->
	<appender name="profilingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.folder}/myapp-profiling.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>${log.folder}/myapp-profiling.log.%i</fileNamePattern>
			<minIndex>1</minIndex>
			<maxIndex>10</maxIndex>
		</rollingPolicy>
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>20MB</maxFileSize>
		</triggeringPolicy>
		<encoder>
			<pattern>%-5p %m%n</pattern>
		</encoder>
	</appender>
	
	<!-- Loggeur specifique pour le jdbc -->
    <!-- ================================= -->
    <!-- Preserve messages in a local file -->
    <!-- ================================= -->
    <appender name="jdbcAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<file>${log.folder}/profiling-jdbc.log</file>
		<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
			<fileNamePattern>${log.folder}/profiling-jdbc.log.%i</fileNamePattern>
			<minIndex>1</minIndex>
			<maxIndex>10</maxIndex>
		</rollingPolicy>
		<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
			<maxFileSize>20MB</maxFileSize>
		</triggeringPolicy>
		<encoder>
			<pattern>%d %X{sessionID} %-5p [%c] %m%n</pattern>
		</encoder>
	</appender>
	
	<!-- Par defaut, on ne veut voir que les erreurs sql -->
    <logger name="jdbc" level="WARN" additivity="false">
    	<appender-ref ref="jdbcAppender"/>
    </logger>

	<!-- pour afficher les ws env rep en xml -->
    <logger name="fr.mycompany.myapp.business.ServiceWS" level="DEBUG" additivity="false">
        <appender-ref ref="wsAppender"/>
    </logger>
    <logger name="fr.mycompany.profiling.xyzprof.ProfilingLogger" level="INFO" additivity="false">
        <appender-ref ref="profilingAppender"/>
    </logger>
    <logger name="fr.mycompany.myapp.ServiceToto" level="INFO" />
	<logger name="fr.mycompany.myapp.ServiceFooBar" level="INFO" />
    
    <!-- ================ -->
    <!-- Limit categories -->
    <!-- ================ -->
    <logger name="org" level="INFO" additivity="true"/>
    <logger name="org.springframework" level="INFO" additivity="true"/>
    <logger name="org.springframework.transaction.jta" level="DEBUG" additivity="true"/>
     <!-- On cache les warnings SQL -->
    <logger name="com.mchange.v2.c3p0" level="ERROR" additivity="true"/>
    <!-- La BeanFactory de Spring est trop bavarde -->
    <logger name="org.springframework.beans.factory" level="WARN" additivity="true"/>
    <logger name="org.acegisecurity.event.authentication.LoggerListener" level="ERROR" additivity="true"/>

	<root level="INFO">
        <appender-ref ref="fileAppender"/>
        <!-- 		<appender-ref ref="consoleAppender" /> -->
    </root>
</configuration>
