# # 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. # Configuration: status: INFO monitorInterval: 30 name: pulsar packages: io.prometheus.client.log4j2 Properties: Property: - name: "pulsar.log.dir" value: "logs" - name: "pulsar.log.file" value: "pulsar.log" - name: "pulsar.log.appender" value: "RoutingAppender" - name: "pulsar.log.root.level" value: "info" - name: "pulsar.log.level" value: "info" - name: "pulsar.routing.appender.default" value: "Console" # Example: logger-filter script Scripts: ScriptFile: name: filter.js language: JavaScript path: ./conf/log4j2-scripts/filter.js charset: UTF-8 Appenders: # Console Console: name: Console target: SYSTEM_OUT PatternLayout: Pattern: "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" # Rolling file appender configuration RollingFile: name: RollingFile fileName: "${sys:pulsar.log.dir}/${sys:pulsar.log.file}" filePattern: "${sys:pulsar.log.dir}/${sys:pulsar.log.file}-%d{MM-dd-yyyy}-%i.log.gz" immediateFlush: false PatternLayout: Pattern: "%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" Policies: TimeBasedTriggeringPolicy: interval: 1 modulate: true SizeBasedTriggeringPolicy: size: 1 GB # Delete file older than 30days DefaultRolloverStrategy: Delete: basePath: ${sys:pulsar.log.dir} maxDepth: 2 IfFileName: glob: "*/${sys:pulsar.log.file}*log.gz" IfLastModified: age: 30d Prometheus: name: Prometheus # Routing Routing: name: RoutingAppender Routes: pattern: "$${ctx:function}" Route: - Routing: name: InstanceRoutingAppender Routes: pattern: "$${ctx:instance}" Route: - RollingFile: name: "Rolling-${ctx:function}" fileName : "${sys:pulsar.log.dir}/functions/${ctx:function}/${ctx:functionname}-${ctx:instance}.log" filePattern : "${sys:pulsar.log.dir}/functions/${sys:pulsar.log.file}-${ctx:instance}-%d{MM-dd-yyyy}-%i.log.gz" PatternLayout: Pattern: "%d{ABSOLUTE} %level{length=5} [%thread] [instance: %X{instance}] %logger{1} - %msg%n" Policies: TimeBasedTriggeringPolicy: interval: 1 modulate: true SizeBasedTriggeringPolicy: size: "20MB" # Trigger every day at midnight that also scan # roll-over strategy that deletes older file CronTriggeringPolicy: schedule: "0 0 0 * * ?" # Delete file older than 30days DefaultRolloverStrategy: Delete: basePath: ${sys:pulsar.log.dir} maxDepth: 2 IfFileName: glob: "*/${sys:pulsar.log.file}*log.gz" IfLastModified: age: 30d - ref: "${sys:pulsar.routing.appender.default}" key: "${ctx:function}" - ref: "${sys:pulsar.routing.appender.default}" key: "${ctx:function}" Loggers: # Default root logger configuration Root: level: "${sys:pulsar.log.root.level}" additivity: true AppenderRef: - ref: "${sys:pulsar.log.appender}" level: "${sys:pulsar.log.level}" - ref: Prometheus level: info Logger: - name: org.apache.bookkeeper.bookie.BookieShell level: info additivity: false AppenderRef: - ref: Console - name: verbose level: info additivity: false AppenderRef: - ref: Console # Logger to inject filter script # - name: org.apache.bookkeeper.mledger.impl.ManagedLedgerImpl # level: debug # additivity: false # AppenderRef: # ref: "${sys:pulsar.log.appender}" # ScriptFilter: # onMatch: ACCEPT # onMisMatch: DENY # ScriptRef: # ref: filter.js