<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements. See the NOTICE file distributed with this
  work for additional information regarding copyright ownership. The ASF
  licenses this file to You under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  License for the specific language governing permissions and limitations
  under the License.
  -->
<!-- Config will be auto loaded every 60s -->
<configuration status="error" monitorInterval="60">
    <properties>
        <property name="LOG_PATH">logs</property>
        <property name="FILE_NAME">hugegraph-server</property>
    </properties>

    <appenders>
        <Console name="console" target="SYSTEM_OUT">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} [%t] [%p] %c{1.} - %m%n"/>
        </Console>

        <!-- Normal server log config -->
        <RollingRandomAccessFile name="file" fileName="${LOG_PATH}/${FILE_NAME}.log"
            filePattern="${LOG_PATH}/$${date:yyyy-MM}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log"
            immediateFlush="false">
            <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} [%t] [%p] %c{1.} - %m%n"/>
            <!-- Trigger after exceeding 1day or 50MB -->
            <Policies>
                <SizeBasedTriggeringPolicy size="50MB"/>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
            <!-- Keep 5 files per day & auto delete after over 2GB or 100 files -->
            <DefaultRolloverStrategy max="5">
                <Delete basePath="${LOG_PATH}" maxDepth="2">
                    <IfFileName glob="*/*.log"/>
                    <!-- Limit log amount & size -->
                    <IfAny>
                        <IfAccumulatedFileSize exceeds="2GB" />
                        <IfAccumulatedFileCount exceeds="100" />
                    </IfAny>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <!-- Separate & compress audit log, buffer size is 512KB -->
        <RollingRandomAccessFile name="audit" fileName="${LOG_PATH}/audit-${FILE_NAME}.log"
            filePattern="${LOG_PATH}/$${date:yyyy-MM}/audit-${FILE_NAME}-%d{yyyy-MM-dd-HH}-%i.gz"
            bufferSize="524288" immediateFlush="false">
            <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
            <!-- Use simple format for audit log to speed up -->
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} - %m%n"/>
            <!-- Trigger after exceeding 1hour or 500MB -->
            <Policies>
                <SizeBasedTriggeringPolicy size="500MB"/>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
            <!-- Keep 2 files per hour & auto delete [after 60 days] or [over 5GB or 500 files] -->
            <DefaultRolloverStrategy max="2">
                <Delete basePath="${LOG_PATH}" maxDepth="2">
                    <IfFileName glob="*/*.gz"/>
                    <IfLastModified age="60d"/>
                    <IfAny>
                        <IfAccumulatedFileSize exceeds="5GB" />
                        <IfAccumulatedFileCount exceeds="500" />
                    </IfAny>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>

        <!-- Slow query log config -->
        <RollingRandomAccessFile name="slowQueryLog" fileName="${LOG_PATH}/slow_query.log"
                                 filePattern="${LOG_PATH}/$${date:yyyy-MM}/slow_query_log-%d{yyyy-MM-dd}-%i.log"
                                 immediateFlush="false">
            <ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout pattern="%-d{yyyy-MM-dd HH:mm:ss} [%t] [%p] %c{1.} - %m%n"/>
            <!-- Trigger after exceeding 1day or 50MB -->
            <Policies>
                <SizeBasedTriggeringPolicy size="50MB"/>
                <TimeBasedTriggeringPolicy interval="1" modulate="true" />
            </Policies>
            <!-- Keep 5 files per day & auto delete after over 2GB or 100 files -->
            <DefaultRolloverStrategy max="5">
                <Delete basePath="${LOG_PATH}" maxDepth="2">
                    <IfFileName glob="*/*.log"/>
                    <!-- Limit log amount & size -->
                    <IfAny>
                        <IfAccumulatedFileSize exceeds="2GB" />
                        <IfAccumulatedFileCount exceeds="100" />
                    </IfAny>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </appenders>

    <loggers>
        <root level="INFO">
            <appender-ref ref="file"/>
        </root>
        <logger name="org.apache.cassandra" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="org.apache.hadoop" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="org.apache.zookeeper" level="WARN" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="com.datastax.driver" level="WARN" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="com.alipay.sofa" level="WARN" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="io.netty" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <logger name="org.apache.commons" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </logger>
        <!-- Use mixed async way to output logs -->
        <AsyncLogger name="org.apache.hugegraph" level="INFO" additivity="false">
            <appender-ref ref="file"/>
        </AsyncLogger>
        <AsyncLogger name="org.apache.hugegraph.auth" level="INFO" additivity="false">
            <appender-ref ref="audit"/>
        </AsyncLogger>
        <AsyncLogger name="org.apache.hugegraph.api.filter.AuthenticationFilter" level="INFO" additivity="false">
            <appender-ref ref="audit"/>
        </AsyncLogger>
        <AsyncLogger name="org.apache.hugegraph.api.filter.AccessLogFilter" level="INFO" additivity="false">
            <appender-ref ref="slowQueryLog"/>
        </AsyncLogger>
    </loggers>
</configuration>
