<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="warn"  packages="ccl.tools.log" monitorInterval="60" name="CCL">
	<Appenders>

		<silentLog4JAppender name="muted"/>

		<Console name="console" target="${log.appender.console.stream}">
			<PatternLayout pattern="${log.standard.layout.pattern}"/>
		</Console>

		<CCLRollingRandomAccessFile name="mainfile"
		                              fileName="${log.appender.mainfile.filename}.log"
		                              append="true"
		                              filePattern="${log.appender.mainfile.filename}.log${log.standard.filename.datepattern}">
			<PatternLayout>
				<Pattern>${log.standard.layout.pattern}</Pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
			</Policies>
			<DefaultRolloverStrategy max="5"/>
			<Filters>
				<RegexFilter regex="${log.filter.exception.IllegalStateException.ExpectedOrUnexpected}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.exception.IllegalStateException.handleUnknown}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.warning.deniedPublishSubscribe}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.warning.cookieNamePathIsReservedToken}"
				             onMatch="DENY"
				             onMismatch="ACCEPT"/>
			</Filters>
		</CCLRollingRandomAccessFile>

		<Async name="asyncmainfile">
			<AppenderRef ref="mainfile"/>
		</Async>

		<CCLRollingRandomAccessFile name="errorfile"
		                              fileName="${log.appender.errorfile.filename}.log"
		                              append="true"
		                              filePattern="${log.appender.errorfile.filename}.log${log.standard.filename.datepattern}">
			<PatternLayout>
				<Pattern>${log.standard.layout.pattern}</Pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
			</Policies>
			<DefaultRolloverStrategy max="5"/>
			<Filters>
				<RegexFilter regex="${log.filter.exception.IllegalStateException.ExpectedOrUnexpected}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.exception.IllegalStateException.handleUnknown}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.warning.deniedPublishSubscribe}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.warning.cookieNamePathIsReservedToken}"
				             onMatch="DENY"
				             onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.exception.socketTimeoutException}"
				             onMatch="DENY"
				             onMismatch="ACCEPT"/>
			</Filters>
		</CCLRollingRandomAccessFile>

		<Async name="asyncerrorfile">
			<AppenderRef ref="errorfile"/>
		</Async>

		<CCLRollingRandomAccessFile name="supressed"
		                              fileName="${log.appender.suppressed.filename}.log"
		                              append="true"
		                              filePattern="${log.appender.suppressed.filename}.log${log.standard.filename.datepattern}">
			<PatternLayout>
				<Pattern>${log.standard.layout.pattern}</Pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
			</Policies>
			<DefaultRolloverStrategy max="5"/>
			<Filters>
				<RegexFilter regex="${log.filter.exception.IllegalStateException.ExpectedOrUnexpected}"
				             onMatch="ACCEPT" onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.exception.IllegalStateException.handleUnknown}"
				             onMatch="ACCEPT" onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.warning.deniedPublishSubscribe}"
				             onMatch="ACCEPT" onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.warning.cookieNamePathIsReservedToken}"
				             onMatch="ACCEPT" onMismatch="NEUTRAL"/>
				<RegexFilter regex="${log.filter.exception.socketTimeoutException}"
				             onMatch="ACCEPT" onMismatch="DENY"/>
			</Filters>
		</CCLRollingRandomAccessFile>

		<Async name="asyncsuppressed">
			<AppenderRef ref="supressed"/>
		</Async>

		<CCLRollingRandomAccessFile name="clienterrorfile"
		                              fileName="${log.appender.client.errorfile.filename}.log"
		                              append="true"
		                              filePattern="${log.appender.client.errorfile.filename}.log${log.standard.filename.datepattern}">
			<PatternLayout>
				<Pattern>${log.standard.layout.pattern}</Pattern>
			</PatternLayout>
			<Policies>
				<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
			</Policies>
			<DefaultRolloverStrategy max="5"/>
		</CCLRollingRandomAccessFile>

	</Appenders>


	<Loggers>

		<Logger name="ccl" level="${log.level.warn}"/>

		<Logger name="ccl.tools.log.LogDebug" level="${log.level.debug}"/>

		<Logger name="ccl.tools.log.LogInfo" level="${log.level.info}"/>

		<Logger name="ccl.tools.log.Log4JJettyWrapper" level="${log.level.warn}" additivity="false">
			<AppenderRef ref="asyncerrorfile" level="warn"/>
			<AppenderRef ref="asyncsuppressed" level="warn"/>
			<AppenderRef ref="${log.appender.mainfile}"/>
			<AppenderRef ref="${log.appender.console}"/>
		</Logger>

		<Logger name="ccl.tools.log.Log4JOutputStreamWrapper" level="${log.level.warn}" additivity="false">
			<AppenderRef ref="${log.appender.mainfile}"/>
			<AppenderRef ref="${log.appender.console}"/>
			<AppenderRef ref="asyncerrorfile"/>
			<AppenderRef ref="asyncsuppressed"/>
		</Logger>

		<Root level="${log.logger.root.level}">
			<AppenderRef ref="${log.appender.console}"/>
			<AppenderRef ref="${log.appender.mainfile}"/>
			<AppenderRef ref="asyncerrorfile" level="error"/>
			<AppenderRef ref="asyncsuppressed" level="error"/>
		</Root>

	</Loggers>


</Configuration>
