osgi + camel + karaf配置日志输出

上篇博文中编了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 logger
log4j.rootLogger=INFO, stdout, out, osgi:*
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer

# 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} | %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} | %m%n
log4j.appender.out.file=${karaf.data}/log/karaf.log
log4j.appender.out.append=true
log4j.appender.out.maxFileSize=1MB
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=karaf
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} | %m%n
log4j.appender.sift.appender.file=${karaf.data}/log/$\\{bundle.name\\}.log
log4j.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的编写。

时间: 2025-01-01 02:14:35

osgi + camel + karaf配置日志输出的相关文章

osgi+camel+karaf运行环境搭建(2)

本文开始osgi运行环境后续搭建,上文介绍了几个运行组件与容器,本文将开始具体的代码编写. root module 打开intellij新建maven工程,待maven工程全部生成完成之后,在pom.xml中添加以下内容. <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.compilerLevel>1.8</pr

osgi+camel+karaf运行环境搭建(1)

这几天一直在学习与加深osgi中的一些东西,又去看了下apache felix中的几个example,于是决定将felix中的一些example写出来,但是不在使用felix官网中那样运行,而是从新搭建一个osgi的运行环境进行相应的学习,在这使用了karaf作为osgi的运行容器,同时整合camel进来,因为在后续会有更多的osgi中的运用,因此,本次全部整合进来. 本文在此先对几个框架和容器进行相应介绍. karaf Karaf是2001年Apache旗下的一个开源项目.Karaf同时也是一

Windows环境下tomcat配置日志输出

在Linux系统中,可以通过tail  -f  catalina.out 来跟踪Tomcat 和相关应用运行的情况. 在windows下,catalina日志与Linux记录的内容有很大区别,大多信息只输出到屏幕而没有记录到catalina.out里面. 把控制台的信息输出到“\%CTALINA_BASE%\logs\catalina.out”里:1.打开bin下面的startup.bat文件,把call "%EXECUTABLE%" start %CMD_LINE_ARGS%    

ibatis配置log4j输出sql日志信息

为了在开发过程更加直观,我们需要将ibatis日志打开以便观察ibatis运作的细节. ibatis采用Apache common_logging,并结合Apache log4j作为日志输出组件. 在CLASSPATH中新建log4j.properties配置文件,内容如下: log4j.rootLogger=DEBUG,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layo

postgresql数据库配置csv格式日志输出

postgresql数据库配置csv格式日志输出 下面介绍postgresql数据库中关于csv格式日志(pg中一种比较详细的日志输出方式)的设置方法. 1.进入$PGDATA目录(pg的安装目录,根据具体情况名称有所区别)下找到配置文件postgresql.conf 2.开启csvlog输出功能: #开启csvlog输出功能(默认为off) logging_collector = on 注:修改完logging_collector后需要重启数据库(当然你也可以继续配置,在所有配置都完成后再重启

Django 中使用 logging 配置 logger 自定义日志输出

在使用 django 开发过程中,默认的日志输出是不能满足我们去排查问题的,往往需要自定义的日志输出,帮助我们去排查程序BUG,定位问题原因. 在使用 django 的开发过程中,我使用的是 python 内置日志模块 logginglogging 的详细使用讲解我就不多说了,度娘一抓一大抓:我只记录下我在 django settings 中的 logger 配置.方便以后使用 以下在我在 settings 中定义的 logger:# Custom output log LOGGING = {'

Haproxy安装配置及日志输出问题

简介:软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载.    HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAproxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,并且能通过允许.拒绝.交换.增加.修改或者删除请求 (r

nohup 配置不输出日志信息的方法及linux重定向学习

起因 最近使用nohup创建了一个后台进程,默认日志输出到了nohup.out文件中,程序跑起来也就没再管, 过了大约一周,发现硬盘空间不够了,于是查找原因,发现这个nohup.out文件已经到了70G了,导致硬 盘空间不足了. 解决方案 只输出错误信息到日志文件 nohup ./program >/dev/null 2>log & 什么信息也不要 nohup ./program >/dev/null 2>&1 & 知识补充,关于Linux的重定向 Linu

log4j(五)——如何控制不同目的地的日志输出?

一:测试环境与log4j(一)--为什么要使用log4j?一样,这里不再重述 二:老规矩,先来个栗子,然后再聊聊感受 import org.apache.log4j.*; import java.io.*; public class UseLog4j { //日志记录器 private static Logger LOGGER = LogManager.getLogger(UseLog4j.class); //程序入口--主函数 public static void main(String[]a