20.2. 命令
Apache Workbench 提供了一组命令来动态更改日志配置并查看日志内容,而不是更改 etc/org.ops4j.logging.cfg
文件,而是提供一组命令来动态更改日志配置并查看日志内容:
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
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
您还可以使用 logger
参数显示特定日志记录器的日志条目:
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
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
选项限制要显示的条目数量:
您还可以使用 etc/org.apache.karaf.log.cfg
文件中的 size
属性限制存储和保留的条目数量:
默认情况下,每个日志级别都以不同的颜色显示: ERROR/FATAL,代表代表,FATA 为红色,以 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.
#
# 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
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
这个模式是一个常规的 Log4j2 模式,您可以使用关键字(如 %d 代表日期),%c 代表类,%m 作为日志消息。
20.2.3. log:exception-display 复制链接链接已复制到粘贴板!
log:exception-display
命令显示最后一次发生异常的情况。
对于 log:display
命令,log:exception-display
命令默认使用 rootLogger
,但您可以使用 logger 参数指定一个 日志记录器
。
20.2.4. log:get 复制链接链接已复制到粘贴板!
log:get
命令显示日志记录器的当前日志级别。
默认情况下,显示的日志级别是来自根日志记录器的日志级别:
您可以使用 logger 参数指定特定的 日志记录器
:
karaf@root()> log:get ssh 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
log4j2.logger.my.name = MyLogger
log4j2.logger.my.level = DEBUG
您可以查看带有相应日志级别的日志记录器列表:
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
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
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
的日志级别:
您可以在 级别
后面使用 logger
参数指定特定的日志记录器:
karaf@root()> log:set INFO my.logger karaf@root()> log:get my.logger Logger | Level ----------------- my.logger | INFO
karaf@root()> log:set INFO my.logger
karaf@root()> log:get my.logger
Logger | Level
-----------------
my.logger | INFO
level
参数接受任何 Log4j2 日志级别: abrt、DEBUG、INFOR、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
rootLogger=INFO,out,osgi:*
my.logger=INFO,appender1
my.logger.custom=DEBUG,appender2
您可以更改 my.logger.custom
logger 的级别:
karaf@root()> log:set INFO my.logger.custom
karaf@root()> log:set INFO my.logger.custom
现在,我们已有:
rootLogger=INFO,out,osgi:* my.logger=INFO,appender1 my.logger.custom=INFO,appender2
rootLogger=INFO,out,osgi:*
my.logger=INFO,appender1
my.logger.custom=INFO,appender2
您可以使用 my.logger.custom
logger 中的 DEFAULT 关键字来删除该级别:
karaf@root()> log:set DEFAULT my.logger.custom
karaf@root()> log:set DEFAULT my.logger.custom
现在,我们已有:
rootLogger=INFO,out,osgi:* my.logger=INFO,appender1 my.logger.custom=appender2
rootLogger=INFO,out,osgi:*
my.logger=INFO,appender1
my.logger.custom=appender2
这表示,在运行时,my.logger.custom
日志记录器使用其父 my.logger
so INFO
的级别。
现在,如果我们将 DEFAULT 关键字与 my.logger
日志记录器搭配使用:
karaf@root()> log:set DEFAULT my.logger
karaf@root()> log:set DEFAULT my.logger
我们有:
rootLogger=INFO,out,osgi:* my.logger=appender1 my.logger.custom=appender2
rootLogger=INFO,out,osgi:*
my.logger=appender1
my.logger.custom=appender2
因此,my.logger.custom
和 my.logger
都使用父 rootLogger
的日志级别。
通过将 DEFAULT 关键字与 rootLogger
一起使用,它没有父项。
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
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 键。