不同的日志级别为不同的Karaf捆绑

时间:2016-06-29 12:58:00

标签: apache-karaf apache-servicemix

Karaf 3.0.5Servicemix 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只有一个特定的捆绑包。

有人可以告诉我是否可以为不同的捆绑设置不同的日志级别?我想问的是,我要说我有两个DEBUGbundle2个捆绑包。我希望ERROR日志级别为List<string>listviewItems.Select(x => (string) x.Tag).ToList() 日志级别为MapsActivity。这可能吗?

1 个答案:

答案 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应该是上面配置中的最后一个文件管理器。