osgi + camel + karaf配置日志输出

来源:互联网 发布:美国监狱方便面 知乎 编辑:程序博客网 时间:2024/06/05 11:03

上篇博文中编了felix的一个简单example,然后演示了example的启动,Activator启动之后进行了控制台输出,但整个example feature的启动过程中那些bundle进行了install过程并没有演示,接下来将演示这一过程。


配置日志

首先对karaf的输出进行日志输出,先前在parent module中pom.xml中配置插件指定配置文件位置,如下所示:

 <plugin>                    <groupId>org.apache.maven.plugins</groupId>                    <artifactId>maven-resources-plugin</artifactId>                    <extensions>true</extensions>                    <executions>                        <execution>                            <id>copy-resources</id>                            <phase>install</phase>                            <goals>                                <goal>copy-resources</goal>                            </goals>                            <configuration>                                <outputDirectory>target/assembly</outputDirectory>                                <overwrite>true</overwrite>                                <resources>                                    <resource>                                        <directory>../../assembly/develop</directory>                                        <filtering>false</filtering>                                    </resource>                                    <resource>                                        <directory>src/test/resources</directory>                                        <filtering>false</filtering>                                    </resource>                                </resources>                            </configuration>                        </execution>                    </executions>                </plugin>
<resource>                                        <directory>../../assembly/develop</directory>                                        <filtering>false</filtering></resource>

这一个是指定全局的配置文件位置,以下这一个是指定每一个module单独的配置文件如每个module独有的数据源等等。

<resource>                                        <directory>src/test/resources</directory>                                        <filtering>false</filtering></resource>

在以上配置完成之后,在相应的root目录下建立相关文件夹,添加名为org.ops4j.pax.logging.cfg的配置文件,这个文件不知道的可以单独在google上查询一下,这个就是指定karaf日志输出以及格式确定的。


日志格式

org.ops4j.pax.logging.cfg具体的内容如下:

##################################################################################    Licensed to the Apache Software Foundation (ASF) under one or more#    contributor license agreements.  See the NOTICE file distributed with#    this work for additional information regarding copyright ownership.#    The ASF 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.################################################################################## Root loggerlog4j.rootLogger=INFO, stdout, out, osgi:*log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer# CONSOLE appender not used by defaultlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n# File appenderlog4j.appender.out=org.apache.log4j.RollingFileAppenderlog4j.appender.out.layout=org.apache.log4j.PatternLayoutlog4j.appender.out.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%nlog4j.appender.out.file=${karaf.data}/log/karaf.loglog4j.appender.out.append=truelog4j.appender.out.maxFileSize=1MBlog4j.appender.out.maxBackupIndex=10# Sift appenderlog4j.appender.sift=org.apache.log4j.sift.MDCSiftingAppenderlog4j.appender.sift.key=bundle.namelog4j.appender.sift.default=karaflog4j.appender.sift.appender=org.apache.log4j.FileAppenderlog4j.appender.sift.appender.layout=org.apache.log4j.PatternLayoutlog4j.appender.sift.appender.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %m%nlog4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.loglog4j.appender.sift.appender.append=true

这里指定了日志输出的具体格式,以及输出那些内容与级别。


演示

现在再次启动karaf,观察输出日志,如下图所示:
这里写图片描述
现在就能仔细查看日志中的具体内容,不必担心当karaf启动失败不知道问题所在了,这里的karaf日志输出在日后整合cxf时候还有具体的应用,这里karaf的日志输出确实比较方便。


#观察karaf中bundle

进入example中的target中的assembly文件夹中,如下图所示:
这里写图片描述
cmd控制台进入上述bin文件夹之中,输入karaf.bat,进入karaf控制台,
这里写图片描述
输入命令bundle:list
查看karaf中所有install的bundle,如下图所示:
这里写图片描述

上图中可以看到example的启动级别为100最高,这里是可以设置的,就是在osgi系列的第二篇博文中指定的feature.xml文件中,如下所示:

<bundle start-level="100">mvn:${project.groupId}/example/${project.version}</bundle>

不过我们一般并不需要这个高的启动级别,一般设置低一点就可以了。

在图中,example的state为Active,表示bundle正常install,另方面证明Activator的启动完全正常,程序演示成功。


总结

本文讲述了karaf具体的日志输出以及bundle install过程,下一篇博文将继续felix 中example的编写。

2 1