<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
	<property resource="application.properties"/>
	<property file="/opt/dataease/conf/dataease.properties"/>
	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<pattern>%d %5p %40.40c:%4L - %m%n</pattern>
		</encoder>
	</appender>

	<appender name="debugAppender"
			  class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>DEBUG</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<File>${logging.file.path}/debug.log</File>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${logging.file.path}/history/debug.%d{yyyyMMdd}-%i.log
			</FileNamePattern>
			<maxHistory>30</maxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy
					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<charset>UTF-8</charset>
			<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
		</encoder>
	</appender>

	<appender name="infoAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		<File>${logging.file.path}/info.log</File>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${logging.file.path}/history/info.%d{yyyyMMdd}-%i.log
			</FileNamePattern>
			<maxHistory>30</maxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy
					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<charset>UTF-8</charset>
			<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
		</encoder>
	</appender>

	<appender name="errorAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>

		<File>${logging.file.path}/error.log</File>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${logging.file.path}/history/error.%d{yyyyMMdd}-%i.log
			</FileNamePattern>
			<maxHistory>30</maxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy
					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<charset>UTF-8</charset>
			<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
		</encoder>
	</appender>

	<appender name="warnAppender"
		class="ch.qos.logback.core.rolling.RollingFileAppender">
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>WARN</level>
			<onMatch>ACCEPT</onMatch>
			<onMismatch>DENY</onMismatch>
		</filter>
		<File>${logging.file.path}/warn.log</File>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<FileNamePattern>${logging.file.path}/history/warn.%d{yyyyMMdd}-%i.log
			</FileNamePattern>
			<maxHistory>30</maxHistory>
			<TimeBasedFileNamingAndTriggeringPolicy
					class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
				<maxFileSize>50MB</maxFileSize>
			</TimeBasedFileNamingAndTriggeringPolicy>
		</rollingPolicy>
		<encoder>
			<charset>UTF-8</charset>
			<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
		</encoder>
	</appender>

	<appender name="consoleAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUG</level>
		</filter>
		<queueSize>10000</queueSize>
		<appender-ref ref="console" />
	</appender>

	<appender name="debugAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>DEBUG</level>
		</filter>
		<queueSize>10000</queueSize>
		<appender-ref ref="debugAppender" />
	</appender>

	<appender name="infoAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		<queueSize>10000</queueSize>
		<appender-ref ref="infoAppender" />
	</appender>

	<appender name="errorAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>ERROR</level>
		</filter>
		<queueSize>10000</queueSize>
		<includeCallerData>true</includeCallerData>
		<appender-ref ref="errorAppender" />
	</appender>

	<appender name="warnAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>WARN</level>
		</filter>
		<queueSize>10000</queueSize>
		<includeCallerData>true</includeCallerData>
		<appender-ref ref="warnAppender" />
	</appender>

	<root level="INFO">
		<appender-ref ref="infoAsyncAppender" />
		<appender-ref ref="console"/>
	</root>

	<logger name="io.dataease" additivity="false">
		<level value="${logger.level:INFO}"/>
		<appender-ref ref="infoAsyncAppender"/>
		<appender-ref ref="warnAsyncAppender"/>
		<appender-ref ref="errorAsyncAppender"/>
	</logger>

	<logger name="io.dataease.base.mapper" level="${logger.sql.level}">
		<appender-ref ref="console"/>
	</logger>

	<logger name="io.dataease.Application" additivity="false" level="${logger.level:INFO}">
		<appender-ref ref="infoAsyncAppender"/>
	</logger>

	<!--	<logger name="com.alibaba.nacos.naming.client.listener" additivity="false" level="ERROR"/>-->
	<!--	<logger name="org.apache.dubbo" additivity="false" level="ERROR"/>-->

</configuration>
