20장. log


Apache Karaf는 동적이고 강력한 로깅 시스템을 제공합니다.

지원 대상:

  • OSGi 로그 서비스
  • Apache Log4j v1 및 v2 프레임워크
  • Apache Commons Logging 프레임워크
  • 로그백 프레임워크
  • SLF4J 프레임워크
  • 네이티브 Java Util Logging 프레임워크

즉, 애플리케이션에서 모든 로깅 프레임워크를 사용할 수 있으며 Apache Karaf는 중앙 로그 시스템을 사용하여 로거, appenders 등을 관리합니다.

20.1. 구성 파일

초기 로그 구성이 etc/org.ops4j.pax.logging.cfg 에서 로드됩니다.

이 파일은 표준 Log4j2 구성 파일입니다.

다양한 Log4j2 요소가 있습니다.

  • 로거
  • appender
  • 레이아웃

파일에 직접 고유한 초기 구성을 추가할 수 있습니다.

기본 구성은 다음과 같습니다.

#
#  Copyright 2005-2018 Red Hat, Inc.
#
#  Red Hat 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.
#

#
# Internal Log4j2 configuration
#
log4j2.status = WARN
log4j2.verbose = false
log4j2.dest = out

#
# Common pattern layouts for appenders defined as reusable properties
# See https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout
# references will be replaced by felix.fileinstall
#
log4j2.pattern = %d{DEFAULT} | %-5.5p | %-20.20t | %-32.32c{1.} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
#log4j2.pattern = %d{DEFAULT} %-5.5p {%t} [%C.%M()] (%F:%L) : %m%n

#
# Appenders configuration
#

# JDBC Appender
log4j2.appender.jdbc.type = JDBC
log4j2.appender.jdbc.name = JdbcAppender
log4j2.appender.jdbc.tableName = EVENTS
log4j2.appender.jdbc.cs.type = DataSource
log4j2.appender.jdbc.cs.lazy = true
log4j2.appender.jdbc.cs.jndiName = osgi:service/jdbc/logdb
log4j2.appender.jdbc.c1.type = Column
log4j2.appender.jdbc.c1.name = DATE
log4j2.appender.jdbc.c1.isEventTimestamp = true
log4j2.appender.jdbc.c2.type = Column
log4j2.appender.jdbc.c2.name = LEVEL
log4j2.appender.jdbc.c2.pattern = %level
log4j2.appender.jdbc.c2.isUnicode = false
log4j2.appender.jdbc.c3.type = Column
log4j2.appender.jdbc.c3.name = SOURCE
log4j2.appender.jdbc.c3.pattern = %logger
log4j2.appender.jdbc.c3.isUnicode = false
log4j2.appender.jdbc.c4.type = Column
log4j2.appender.jdbc.c4.name = THREAD_ID
log4j2.appender.jdbc.c4.pattern = %thread
log4j2.appender.jdbc.c4.isUnicode = false
log4j2.appender.jdbc.c5.type = Column
log4j2.appender.jdbc.c5.name = MESSAGE
log4j2.appender.jdbc.c5.pattern = %message
log4j2.appender.jdbc.c5.isUnicode = false


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

# Rolling file appender
log4j2.appender.rolling.type = RollingRandomAccessFile
log4j2.appender.rolling.name = RollingFile
log4j2.appender.rolling.fileName = ${karaf.data}/log/fuse.log
log4j2.appender.rolling.filePattern = ${karaf.data}/log/fuse-%i.log.gz
# 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
log4j2.appender.rolling.strategy.type = DefaultRolloverStrategy
log4j2.appender.rolling.strategy.max = 20

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

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

#
# Loggers configuration
#

# Root logger
log4j2.rootLogger.level = INFO
log4j2.rootLogger.appenderRef.RollingFile.ref = RollingFile
log4j2.rootLogger.appenderRef.PaxOsgi.ref = PaxOsgi
log4j2.rootLogger.appenderRef.Console.ref = Console
log4j2.rootLogger.appenderRef.Console.filter.threshold.type = ThresholdFilter
log4j2.rootLogger.appenderRef.Console.filter.threshold.level = ${karaf.log.console:-OFF}
#log4j2.rootLogger.appenderRef.Sift.ref = Routing

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

# Security audit logger
log4j2.logger.audit.name = org.apache.karaf.jaas.modules.audit
log4j2.logger.audit.level = INFO
log4j2.logger.audit.additivity = false
log4j2.logger.audit.appenderRef.AuditRollingFile.ref = AuditRollingFile

# 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

기본 구성은 파일 appender를 사용하여 INFO 로그 수준으로 ROOT 로거를 정의합니다. 로그 수준을 Log4j2 유효한 값으로 변경할 수 있습니다. 가장 상세 정보에서 최소 상세 정보까지 TRACE, DEBUG, INFO, ERROR 또는 FATAL을 지정할 수 있습니다.

OSGi appender
osgi:* appender는 로그 메시지를 OSGi 로그 서비스로 보내는 특수 appender입니다.
stdout appender
stdout 콘솔 appender는 사전 구성되었지만 기본적으로 활성화되어 있지 않습니다. 이 appender를 사용하면 로그 메시지를 표준 출력에 직접 표시할 수 있습니다. Apache Karaf를 서버 모드에서 실행하려는 경우 콘솔 없이 유용할 수 있습니다.

이를 활성화하려면 stdout appender를 rootLogger 에 추가해야 합니다.

log4j2.rootLogger=INFO, out, stdout, osgi:*
out appender
out appender는 기본 항목입니다. 10 1MB 로그 파일을 유지 관리하고 순환하는 롤링 파일 appender입니다. 로그 파일은 기본적으로 data/log/fuse.log 에 있습니다.
Sift appender
sift appender 는 기본적으로 활성화되어 있지 않습니다. 이 appender를 사용하면 배포된 번들당 하나의 로그 파일을 사용할 수 있습니다. 기본적으로 로그 파일 이름 형식은 번들 심볼릭 이름( 데이터/로그 폴더)을 사용합니다. 런타임 시 이 파일을 편집할 수 있습니다. Apache Karaf는 파일을 다시 로드하고 변경 사항이 적용됩니다. Apache Karaf를 다시 시작할 필요가 없습니다. 다른 설정 파일은 Apache Karaf: etc/org.apache.karaf.log.cfg 에서 사용합니다. 이 파일은 로그 명령에서 사용하는 로그 서비스를 구성합니다(나중에 참조).
JDBC appender
jdbc appender에는 lazy 플래그가 있으며, true (활성화)인 경우 데이터 소스를 사용할 수 없는 경우 데이터베이스에 로깅이 추가되지 않습니다. 그러나 jndi, 데이터 소스 또는 연결이 다시되면 로깅이 다시 시작됩니다.
log4j2.appender.jdbc.cs.lazy = true
중요

로깅 메시지가 손실되지 않도록 하려면 긴급 추가 기능도 다시 구성하는 것이 좋습니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.