20.2. 명령
etc/org.ops4j.pax.logging.cfg
파일을 변경하는 대신 Apache Karaf는 로그 구성을 동적으로 변경하고 로그 콘텐츠를 볼 수 있는 명령 세트를 제공합니다.
20.2.1. log:clear
log:clear
명령은 로그 항목을 지웁니다.
20.2.2. log:display
log:display
명령은 로그 항목을 표시합니다.
기본적으로 rootLogger
의 로그 항목을 표시합니다.
karaf@root()> log:display 2015-07-01 19:12:46,208 | INFO | FelixStartLevel | SecurityUtils | 16 - org.apache.sshd.core - 0.12.0 | BouncyCastle not registered, using the default JCE provider 2015-07-01 19:12:47,368 | INFO | FelixStartLevel | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Starting JMX OSGi agent
로거 인수를 사용하여 특정 로거의 로그 항목을 표시할 수도 있습니다.
karaf@root()> log:display ssh 2015-07-01 19:12:46,208 | INFO | FelixStartLevel | SecurityUtils | 16 - org.apache.sshd.core - 0.12.0 | BouncyCastle not registered, using the default JCE provider
기본적으로 모든 로그 항목이 표시됩니다. Apache Karaf 컨테이너가 장기 실행 중인 경우 매우 길 수 있습니다. n
옵션을 사용하여 표시할 항목 수를 제한할 수 있습니다.
karaf@root()> log:display -n 5 2015-07-01 06:53:24,143 | INFO | JMX OSGi Agent | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.BundleStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=bundleState,version=1.7,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1 2015-07-01 06:53:24,150 | INFO | JMX OSGi Agent | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.PackageStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=packageState,version=1.5,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1 2015-07-01 06:53:24,150 | INFO | JMX OSGi Agent | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.ServiceStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=serviceState,version=1.7,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1 2015-07-01 06:53:24,152 | INFO | JMX OSGi Agent | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.framework.wiring.BundleWiringStateMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.core:type=wiringState,version=1.1,framework=org.apache.felix.framework,uuid=5335370f-9dee-449f-9b1c-cabe74432ed1 2015-07-01 06:53:24,501 | INFO | FelixStartLevel | RegionsPersistenceImpl | 78 - org.apache.karaf.region.persist - 4.0.0 | Loading region digraph persistence
etc/org.apache.karaf.log.cfg
파일의 size
속성을 사용하여 저장 및 유지되는 항목 수를 제한할 수도 있습니다.
# # The number of log statements to be displayed using log:display. It also defines the number # of lines searched for exceptions using log:display exception. You can override this value # at runtime using -n in log:display. # size = 500
기본적으로 각 로그 수준은 다른 색상으로 표시됩니다. ERROR/FATAL은 빨간색, DEBUG in purple, INFO in cyan 등입니다. no-color 옵션을 사용하여 색상을
비활성화할 수 있습니다.
로그 항목 형식 패턴은 etc/org.ops4j.pax.logging.cfg
파일에 정의된 변환 패턴을 사용하지 않습니다. 기본적으로 etc/org.apache.karaf.log.cfg
에 정의된 pattern
속성을 사용합니다.
# # The pattern used to format the log statement when using log:display. This pattern is according # to the log4j2 layout. You can override this parameter at runtime using log:display with -p. # pattern = %d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
또한 -p
옵션을 사용하여 동적으로(한 번 실행) 패턴을 변경할 수도 있습니다.
karaf@root()> log:display -p "\%d - \%c - \%m\%n" 2015-07-01 07:01:58,007 - org.apache.sshd.common.util.SecurityUtils - BouncyCastle not registered, using the default JCE provider 2015-07-01 07:01:58,725 - org.apache.aries.jmx.core - Starting JMX OSGi agent 2015-07-01 07:01:58,744 - org.apache.aries.jmx.core - Registering MBean with ObjectName [osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=6361fc65-8df4-4886-b0a6-479df2d61c83] for service with service.id [13] 2015-07-01 07:01:58,747 - org.apache.aries.jmx.core - Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=6361fc65-8df4-4886-b0a6-479df2d61c83
패턴은 날짜에 %d, 클래스의 %c, 로그 메시지의 경우 %m과 같은 키워드를 사용할 수 있는 일반 Log4j2 패턴입니다.
20.2.3. log:exception-display
log:exception-display
명령은 마지막으로 발생한 예외를 표시합니다.
log:display
명령과 마찬가지로 log:exception-display
명령은 기본적으로 rootLogger
를 사용하지만 logger
인수를 사용하여 로거를 지정할 수 있습니다.
20.2.4. log:get
log:get
명령은 로거의 현재 로그 수준을 표시합니다.
기본적으로 표시된 로그 수준은 루트 로거에서 가져온 것입니다.
karaf@root()> log:get Logger │ Level ────────────────────────────────────┼────── ROOT │ INFO org.apache.aries.spifly │ WARN org.apache.karaf.jaas.modules.audit │ INFO org.apache.sshd │ INFO
로거 인수를 사용하여 특정 로거
를 지정할 수 있습니다.
karaf@root()> log:get ssh INFO
logger
인수는 ALL
키워드를 사용하여 모든 로거의 로그 수준을 목록으로 표시합니다.
예를 들어 etc/org.ops4j.pax.logging.cfg
파일에서 다음과 같이 자체 로거를 정의했습니다.
log4j2.logger.my.name = MyLogger log4j2.logger.my.level = DEBUG
해당 로그 수준으로 로거 목록을 확인할 수 있습니다.
karaf@root()> log:get ALL Logger │ Level ────────────────────────────────────┼────── MyLogger │ DEBUG ROOT │ INFO org.apache.aries.spifly │ WARN org.apache.karaf.jaas.modules.audit │ INFO org.apache.sshd │ INFO
log:list
명령은 log:get ALL
의 별칭입니다.
20.2.5. log:log
log:log
명령을 사용하면 로그에 메시지를 수동으로 추가할 수 있습니다. Apache Karaf 스크립트를 만들 때 매우 유용합니다.
karaf@root()> log:log "Hello World" karaf@root()> log:display 12:55:21.706 INFO [pipe-log:log "Hello World"] Hello World
기본적으로 로그 수준은 INFO이지만 -l
옵션을 사용하여 다른 로그 수준을 지정할 수 있습니다.
karaf@root()> log:clear karaf@root()> log:log -l ERROR "Hello World" karaf@root()> log:display 12:55:41.460 ERROR [pipe-log:log "Hello World"] Hello World
20.2.6. log:set
log:set
명령은 로거의 로그 수준을 설정합니다.
기본적으로 rootLogger
의 로그 수준을 변경합니다.
karaf@root()> log:set DEBUG karaf@root()> log:get Logger │ Level ────────────────────────────────────┼────── ROOT │ DEBUG ...
수준
1 뒤에 로거 인수를 사용하여 특정 로거
를 지정할 수 있습니다.
karaf@root()> log:set INFO my.logger karaf@root()> log:get my.logger Logger | Level ----------------- my.logger | INFO
level
인수는 Log4j2 로그 수준인 TRACE, DEBUG, INFO, WARN, ERROR, FATAL을 허용합니다.
또한 DEFAULT 특수 키워드도 허용합니다.
DEFAULT 키워드의 목적은 로거 상위 수준의 로거를 사용하기 위해 로거의 현재 수준을 삭제하는 것입니다(및 수준만 수준만, appender와 같은 다른 속성은 삭제되지 않습니다).
예를 들어 다음 로거( etc/org.ops4j.pax.logging.cfg
파일)를 정의했습니다.
rootLogger=INFO,out,osgi:* my.logger=INFO,appender1 my.logger.custom=DEBUG,appender2
my.logger.custom
로거의 수준을 변경할 수 있습니다.
karaf@root()> log:set INFO my.logger.custom
이제 다음을 수행합니다.
rootLogger=INFO,out,osgi:* my.logger=INFO,appender1 my.logger.custom=INFO,appender2
my.logger.custom
로거에서 DEFAULT 키워드를 사용하여 수준을 제거할 수 있습니다.
karaf@root()> log:set DEFAULT my.logger.custom
이제 다음을 수행합니다.
rootLogger=INFO,out,osgi:* my.logger=INFO,appender1 my.logger.custom=appender2
즉, 런타임에
로거는 상위 my.logger의 수준을 사용하므로 my.logger
.customINFO
임을 의미합니다.
이제 my.logger
로거와 함께 DEFAULT 키워드를 사용하는 경우:
karaf@root()> log:set DEFAULT my.logger
Red Hat은 다음과 같습니다.
rootLogger=INFO,out,osgi:* my.logger=appender1 my.logger.custom=appender2
따라서 my.logger.custom
및 my.logger
모두 상위 rootLogger
의 로그 수준을 사용합니다.
rootLogger
와 함께 DEFAULT 키워드를 사용할 수 없으며 부모가 없습니다.
20.2.7. log:tail
log:tail
은 log:display
와 정확히 동일하지만 로그 항목을 지속적으로 표시합니다.
log:display
명령과 동일한 옵션 및 인수를 사용할 수 있습니다.
기본적으로 rootLogger
의 항목을 표시합니다.
karaf@root()> log:tail 2015-07-01 07:40:28,152 | INFO | FelixStartLevel | SecurityUtils | 16 - org.apache.sshd.core - 0.9.0 | BouncyCastle not registered, using the default JCE provider 2015-07-01 07:40:28,909 | INFO | FelixStartLevel | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Starting JMX OSGi agent 2015-07-01 07:40:28,928 | INFO | FelixStartLevel | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering MBean with ObjectName [osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=b44a44b7-41cd-498f-936d-3b12d7aafa7b] for service with service.id [13] 2015-07-01 07:40:28,936 | INFO | JMX OSGi Agent | core | 68 - org.apache.aries.jmx.core - 1.1.1 | Registering org.osgi.jmx.service.cm.ConfigurationAdminMBean to MBeanServer com.sun.jmx.mbeanserver.JmxMBeanServer@27cc75cb with name osgi.compendium:service=cm,version=1.3,framework=org.apache.felix.framework,uuid=b44a44b7-41cd-498f-936d-3b12d7aafa7b
log:tail
명령을 종료하려면 CTRL-C를 입력합니다.