在Karaf 3.0.5
下Servicemix 6.1.0
org.ops4j.pax.logging.cfg
# Root logger
log4j.rootLogger=DEBUG, async, osgi:*
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
# To avoid flooding the log when using DEBUG level on an ssh connection and doing log:tail
log4j.logger.org.apache.sshd.server.channel.ChannelSession = INFO
# CONSOLE appender not used by default
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %X | %m%n
# File appender
log4j.appender.out=org.apache.log4j.RollingFileAppender
log4j.appender.out.layout=org.apache.log4j.PatternLayout
log4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %X | %m%n
log4j.appender.out.file=/tmp/servicemix.log
log4j.appender.out.append=true
log4j.appender.out.maxFileSize=1024MB
log4j.appender.out.maxBackupIndex=10
# Sift appender
log4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppender
log4j.appender.sift.key=bundle.name
log4j.appender.sift.default=servicemix
log4j.appender.sift.appender=org.apache.log4j.FileAppender
log4j.appender.sift.appender.layout=org.apache.log4j.PatternLayout
log4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X | %m%n
log4j.appender.sift.appender.file=/tmp/$\\{bundle.name\\}.log
log4j.appender.sift.appender.append=true
# Async appender
log4j.appender.async=org.apache.log4j.AsyncAppender
log4j.appender.async.appenders=out
DEBUG
bundle1
下面显示{ - 1}},如下所示:
bundle2
现在这个记录器配置也正在转储Karaf的调试日志,而我的目的是bundle1
只有一个特定的捆绑包。
有人可以告诉我是否可以为不同的捆绑设置不同的日志级别?我想问的是,我要说我有两个DEBUG
和bundle2
个捆绑包。我希望ERROR
日志级别为List<string>
,listviewItems.Select(x => (string) x.Tag).ToList()
日志级别为MapsActivity
。这可能吗?
答案 0 :(得分:0)
正如karaf mailing-list中所讨论的那样,因为我对不同的捆绑使用不同的记录器。因此,只需在org.ops4j.pax.logging.cfg
中为捆绑级别记录器设置日志级别(如下所示)就可以解决它。
log4j.logger.com.j1.bundle1 = DEBUG
在上面提到的主题中提出了另一个解决方案。我没试过,只是在下面引用它: -
你可以通过使用MDC结合过滤器来实现这一点(我实现了它 在几年前的Pax记录中。)
如果您使用此根记录器,请执行以下操作:
log4j.rootLogger = INFO,stdout,info,error,bundle,context,osgi:*
你定义&#34;捆绑&#34;记录如下:
log4j.appender.bundle = org.apache.log4j.sift.MDCSiftingAppender log4j.appender.bundle.key = bundle.name log4j.appender.bundle.default = karaf log4j.appender.bundle.appender = org.apache.log4j.RollingFileAppender进行 log4j.appender.bundle.appender.MaxFileSize = 1MB log4j.appender.bundle.appender.MaxBackupIndex = 2 log4j.appender.bundle.appender.layout = org.apache.log4j.PatternLayout log4j.appender.bundle.appender.layout.ConversionPattern =%d {ISO8601} | %-5.5p | %-16.16t | %-32.32c {1} | %-32.32C%4L | %米%正 log4j.appender.bundle.appender.file = $ {LOGDIR} /捆绑/ $ \ {bundle.name \}。日志 log4j.appender.bundle.appender.append =真 log4j.appender.bundle.threshold = INFO
每个捆绑包最终会有一个单独的日志文件(以 捆绑的名称)。我使用自定义变量($ {logdir})来指定位置 创建日志文件,但您可以按照自己的意愿。在这种情况下这些 日志文件将处于INFO级别。
有时我想在特定的捆绑包上进行TRACE登录。我可以这样做 如下:
log4j.rootLogger = TRACE,stdout,info,error,bundle,context,osgi:*, bundle_trace
log4j.appender.bundle_trace = org.apache.log4j.sift.MDCSiftingAppender log4j.appender.bundle_trace.key = bundle.name log4j.appender.bundle_trace.default = karaf log4j.appender.bundle_trace.appender = org.apache.log4j.RollingFileAppender进行 log4j.appender.bundle_trace.appender.MaxFileSize = 10MB log4j.appender.bundle_trace.appender.MaxBackupIndex = 2 log4j.appender.bundle_trace.appender.layout = org.apache.log4j.PatternLayout log4j.appender.bundle_trace.appender.layout.ConversionPattern =%d {ISO8601} | %-5.5p | %-16.16t | %-32.32c {1} | %-32.32C%4L | %米%正 log4j.appender.bundle_trace.appender.file = $ {LOGDIR} /捆绑/跟踪/ $ \ {bundle.name \}。日志 log4j.appender.bundle_trace.appender.append =真 log4j.appender.bundle_trace.threshold = TRACE log4j.appender.bundle_trace.filter.a = org.apache.log4j.filter.MDCMatchFilter log4j.appender.bundle_trace.filter.a.exactMatch = FALSE log4j.appender.bundle_trace.filter.a.keyToMatch = bundle.name log4j.appender.bundle_trace.filter.a.valueToMatch = org.apache.aries.blueprint.core log4j.appender.bundle_trace.filter.z = org.apache.log4j.varia.DenyAllFilter
在上面的示例中,我为包创建了一个单独的TRACE日志 名称&#34; org.apache.aries.blueprint.core&#34;。
还可以为特定的驼峰配置自定义日志记录 我们在基于Karaf和。的集成平台中所做的上下文 骆驼。 还有一点需要注意,DenyAllFilter应该是上面配置中的最后一个文件管理器。