<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30" >
    <Properties>
        <Property name="LOG_PATH">$${sys:logging.file.path:-./logs}</Property>
        <Property name="SAFE_MSG">%enc{%desensitize{%m}}{CRLF}%n</Property>
        <Property name="FILE_PERMISSIONS">rw-r-----</Property>
        <Property name="LOG_PATTERN">%style{%d{yyyy-MM-dd HH:mm:ss}}{blue} [%style{%t}{cyan}] [%style{%c{32}}{yellow}] - [%highlight{%p}] ${SAFE_MSG}</Property>
    </Properties>

    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}"/>
        </Console>
        <RollingFile name="FileInfo" filePermissions="${FILE_PERMISSIONS}"
                     fileName="${LOG_PATH}/sys.log"
                     filePattern="${LOG_PATH}/sys.%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="20 MB"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${LOG_PATH}" maxDepth="1">
                    <IfFileName glob="sys.*.log" />
                    <IfLastModified age="60d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <RollingFile name="HostAgentAppend" filePermissions="${FILE_PERMISSIONS}"
                     fileName="${LOG_PATH}/agent.log"
                     filePattern="${LOG_PATH}/agent.%d{yyyy-MM-dd}-%i.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="20 MB"/>
                <TimeBasedTriggeringPolicy/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${LOG_PATH}" maxDepth="1">
                    <IfFileName glob="agent.*.log" />
                    <IfLastModified age="60d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <RollingFile name="FileError" filePermissions="${FILE_PERMISSIONS}"
                     fileName="${LOG_PATH}/sys-error.log"
                     filePattern="${LOG_PATH}/sys-error.%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
            </Policies>
            <DefaultRolloverStrategy>
                <Delete basePath="${LOG_PATH}" maxDepth="1">
                    <IfFileName glob="sys-error.*.log" />
                    <IfLastModified age="60d" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>

    <Loggers>
        <!-- 专门处理AgentHeartbeatServiceImpl类的日志 additivity="false"确保日志不会传播到父 Logger(Root),从而防止在其他 Appender 中重复记录-->
        <Logger name="org.opengauss.agent" level="info" additivity="false">
            <AppenderRef ref="HostAgentAppend"/>
        </Logger>

        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="FileInfo"/>
            <AppenderRef ref="FileError"/>
        </Root>
        <Logger name="org.apache.tomcat.util" level="OFF"  additivity="false"/>
        <Logger name="org.springframework.web.servlet" level="ERROR"  additivity="false"/>
        <Logger name="org.opengauss.core.v3" level="ERROR"  additivity="false"/>
    </Loggers>
    <!--  <Plugins>-->
    <!--    <Plugin name="DesensitizeConverter" category="Converter" class="org.opengauss.tool.log4j2.desensitize.converter.Log4j2DesensitizingConverter"/>-->
    <!--  </Plugins>-->
</Configuration>