################################################################################
#
#    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.
#
################################################################################

# Colors for log level rendering
color.fatal = bright red
color.error = bright red
color.warn = bright yellow
color.info = bright green
color.debug = cyan
color.trace = cyan

# Common pattern layout for appenders
log4j2.pattern = %d{ISO8601} | %-5p | %-16t | %-32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
log4j2.out.pattern = \u001b[90m%d{HH:mm:ss\.SSS}\u001b[0m %highlight{%-5level}{FATAL=${color.fatal}, ERROR=${color.error}, WARN=${color.warn}, INFO=${color.info}, DEBUG=${color.debug}, TRACE=${color.trace}} \u001b[90m[%c{1}]\u001b[0m %msg%n%throwable


# Root logger
log4j2.rootLogger.level = INFO
# uncomment to use asynchronous loggers, which require mvn:com.lmax/disruptor/3.3.2 library
#log4j2.rootLogger.type = asyncRoot
#log4j2.rootLogger.includeLocation = false
log4j2.rootLogger.appenderRef.RollingFile.ref = RollingFile
log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi
log4j2.rootLogger.appenderRef.Console.ref = Console
log4j2.rootLogger.appenderRef.Console.filter.regex.type = RegexFilter
log4j2.rootLogger.appenderRef.Console.filter.regex.regex = .*Audit.*
log4j2.rootLogger.appenderRef.Console.filter.regex.onMatch = DENY
log4j2.rootLogger.appenderRef.Console.filter.regex.onMismatch = ACCEPT
#log4j2.rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter
#log4j2.rootLogger.appenderRef.Console.filter.threshold.level = ${karaf.log.console:-OFF}

# Loggers configuration

# SSHD logger
log4j2.logger.sshd.name = org.apache.sshd
log4j2.logger.sshd.level = INFO

# Spifly logger
log4j2.logger.spifly.name = org.apache.aries.spifly
log4j2.logger.spifly.level = WARN

# Security audit logger
log4j2.logger.audit.name = audit
log4j2.logger.audit.level = TRACE
log4j2.logger.audit.additivity = false
log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile

log4j2.logger.securityAudit.name = securityAudit
log4j2.logger.securityAudit.level = TRACE
log4j2.logger.securityAudit.additivity = false
log4j2.logger.securityAudit.appenderRef.AuditRollingFile.ref = AuditRollingFile

log4j2.logger.karafAudit.name = karafAudit
log4j2.logger.karafAudit.level = TRACE
log4j2.logger.karafAudit.additivity = false
log4j2.logger.karafAudit.appenderRef.AuditRollingFile.ref = KarafRollingFile

# Appenders configuration

# Console appender not used by default (see log4j2.rootLogger.appenderRefs)
log4j2.appender.console.type = Console
log4j2.appender.console.name = Console
log4j2.appender.console.layout.type = PatternLayout
log4j2.appender.console.layout.pattern = ${log4j2.out.pattern}

# Rolling file appender
log4j2.appender.rolling.type = RollingRandomAccessFile
log4j2.appender.rolling.name = RollingFile
log4j2.appender.rolling.filter.regex.type = RegexFilter
log4j2.appender.rolling.filter.regex.regex = .*AuditLog.*
log4j2.appender.rolling.filter.regex.onMatch = DENY
log4j2.appender.rolling.filter.regex.onMismatch = ACCEPT
log4j2.appender.rolling.fileName = ${karaf.data}/log/karaf.log
log4j2.appender.rolling.filePattern = ${karaf.data}/log/karaf.log.%i
# uncomment to not force a disk flush
#log4j2.appender.rolling.immediateFlush = false
log4j2.appender.rolling.append = true
log4j2.appender.rolling.layout.type = PatternLayout
log4j2.appender.rolling.layout.pattern = ${log4j2.pattern}
log4j2.appender.rolling.policies.type = Policies
log4j2.appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.rolling.policies.size.size = 16MB

# Audit file appender
log4j2.appender.audit.type = RollingRandomAccessFile
log4j2.appender.audit.name = AuditRollingFile
log4j2.appender.audit.fileName = ${karaf.data}/log/security.log
log4j2.appender.audit.filePattern = ${karaf.data}/log/security-%i.log
log4j2.appender.audit.append = true
log4j2.appender.audit.layout.type = PatternLayout
log4j2.appender.audit.layout.pattern = %m%n
log4j2.appender.audit.policies.type = Policies
log4j2.appender.audit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.audit.policies.size.size = 8MB

log4j2.appender.securityAudit.type = RollingRandomAccessFile
log4j2.appender.securityAudit.name = AuditRollingFile
log4j2.appender.securityAudit.fileName = ${karaf.data}/log/audit.log
log4j2.appender.securityAudit.filePattern = ${karaf.data}/log/audit-%i.log
log4j2.appender.securityAudit.append = true
log4j2.appender.securityAudit.layout.type = PatternLayout
log4j2.appender.securityAudit.layout.pattern = ${log4j2.pattern}
log4j2.appender.securityAudit.policies.type = Policies
log4j2.appender.securityAudit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.securityAudit.policies.size.size = 8MB

log4j2.appender.karafAudit.type = RollingRandomAccessFile
log4j2.appender.karafAudit.name = KarafRollingFile
log4j2.appender.karafAudit.fileName = ${karaf.data}/log/karaf.log
log4j2.appender.karafAudit.filePattern = ${karaf.data}/log/karaf-%i.log
log4j2.appender.karafAudit.append = true
log4j2.appender.karafAudit.layout.type = PatternLayout
log4j2.appender.karafAudit.layout.pattern = ${log4j2.pattern}
log4j2.appender.karafAudit.policies.type = Policies
log4j2.appender.karafAudit.policies.size.type = SizeBasedTriggeringPolicy
log4j2.appender.karafAudit.policies.size.size = 8MB

# OSGi appender
log4j2.appender.osgi.type = PaxOsgi
log4j2.appender.osgi.name = PaxOsgi
log4j2.appender.osgi.filter = *

# help with identification of maven-related problems with pax-url-aether
#log4j2.logger.aether.name = shaded.org.eclipse.aether
#log4j2.logger.aether.level = TRACE
#log4j2.logger.http-headers.name = shaded.org.apache.http.headers
#log4j2.logger.http-headers.level = DEBUG
#log4j2.logger.maven.name = org.ops4j.pax.url.mvn
#log4j2.logger.maven.level = TRACE

# --- Example for a Kafka appender ---
# Avoid recursive logging for Kafka
# log4j2.logger.apacheKafka.name = org.apache.kafka
# log4j2.logger.apacheKafka.level = INFO

# Kafka appender definition
# log4j2.appender.kafka.type = Kafka
# log4j2.appender.kafka.name = Kafka
# log4j2.appender.kafka.property.type = Property
# log4j2.appender.kafka.property.name = bootstrap.servers
# log4j2.appender.kafka.property.value = localhost:9092
# log4j2.appender.kafka.topic = onos.log
# Async send, no need to wait for Kafka ack for each record
# log4j2.appender.kafka.syncSend = false
# log4j2.kafka.pattern = {"@timestamp":"%d{yyyy-MM-dd'T'HH:mm:ss.SSS'Z'}","levelname":"%p","threadName":"%t","category":"%c{1}","bundle.id":"%X{bundle.id}","bundle.name":"%X{bundle.name}","bundle.version":"%X{bundle.version}","message":"%m"}%n
# log4j2.appender.kafka.layout.type = PatternLayout
# log4j2.appender.kafka.layout.pattern = ${log4j2.kafka.pattern}
# log4j2.rootLogger.appenderRef.Kafka.ref = Kafka