环境准备:

1.在karaf_home下新建 config及logs目录

2.将mylog4j.properties拷贝到config文件夹下

查看log4j-1.2.17.jar/MANIFEST.MF

Manifest-Version: 1.0
Export-Package: org.apache.log4j.net;uses:="org.apache.log4j,org.apache.log4j.spi,javax.naming,org.apache.log4j.helpers,javax.jms,org.apache.log4j.xml,javax.mail,javax.mail.internet,org.w3c.dom,javax.jmdns";version="1.2.17",org.apache.log4j.jmx;uses:="org.apache.log4j,javax.management,org.apache.log4j.helpers,org.apache.log4j.spi";version="1.2.17",org.apache.log4j.jdbc;uses:="org.apache.log4j,org.apache.log4j.spi";version="1.2.17",org.apache.log4j.config;uses:="org.apache.log4j.helpers,org.apache.log4j,org.apache.log4j.spi";version="1.2.17",org.apache.log4j.helpers;uses:="org.apache.log4j,org.apache.log4j.spi,org.apache.log4j.pattern";version="1.2.17",org.apache.log4j;uses:="org.apache.log4j.spi,org.apache.log4j.helpers,org.apache.log4j.pattern,org.apache.log4j.or,org.apache.log4j.config";version="1.2.17",org.apache.log4j.or.jms;uses:="org.apache.log4j.helpers,javax.jms,org.apache.log4j.or";version="1.2.17",org.apache.log4j.nt;uses:="org.apache.log4j.helpers,org.apache.log4j,org.apache.log4j.spi";version="1.2.17",org.apache.log4j.or.sax;uses:="org.apache.log4j.or,org.xml.sax";version="1.2.17",org.apache.log4j.pattern;uses:="org.apache.log4j.helpers,org.apache.log4j.spi,org.apache.log4j,org.apache.log4j.or";version="1.2.17",org.apache.log4j.spi;uses:="org.apache.log4j,org.apache.log4j.helpers,org.apache.log4j.or";version="1.2.17",org.apache.log4j.rewrite;uses:="org.apache.log4j,org.apache.log4j.spi,org.apache.log4j.helpers,org.apache.log4j.xml,org.w3c.dom";version="1.2.17",org.apache.log4j.or;uses:="org.apache.log4j.helpers,org.apache.log4j.spi,org.apache.log4j";version="1.2.17",org.apache.log4j.xml;uses:="javax.xml.parsers,org.w3c.dom,org.xml.sax,org.apache.log4j.config,org.apache.log4j.helpers,org.apache.log4j,org.apache.log4j.spi,org.apache.log4j.or";version="1.2.17",org.apache.log4j.varia;uses:="org.apache.log4j.spi,org.apache.log4j,org.apache.log4j.helpers";version="1.2.17"
Ignore-Package: com.sun.jdmk.comm,javax.swing.text,javax.swing.border,javax.swing.tree,javax.swing,com.ibm.uvm.tools,javax.swing.table,javax.swing.event
Built-By: cy
Tool: Bnd-0.0.357
Bundle-Name: Apache Log4j
Created-By: Apache Maven Bundle Plugin
Bundle-Vendor: Apache Software Foundation
Build-Jdk: 1.6.0_23
Bundle-Version: 1.2.17
Bnd-LastModified: 1336302107501
Bundle-ManifestVersion: 2
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt
Bundle-Description: Apache Log4j 1.2
Bundle-DocURL: http://logging.apache.org/log4j/1.2
Bundle-SymbolicName: log4j
Import-Package: javax.jmdns;resolution:=optional,javax.jms;resolution:=optional,javax.mail;resolution:=optional,javax.mail.internet;resolution:=optional,javax.management,javax.naming,javax.xml.parsers,org.w3c.dom,org.xml.sax,org.xml.sax.helpersName: org.apache.log4j
DynamicImport-Package: *
Implementation-Vendor: "Apache Software Foundation"
Implementation-Title: log4j
Implementation-Version: 1.2.17

我们能够看到 log4j-1.2.17.jar 就是一个Bundle

热部署 log4j

启动karaf,将 log4j-1.2.17.jar 拷贝到karaf_home/deploy文件夹下

输入 list 命令。能够查看Bundle已经成功安装

mylog4j.properties

### direct log messages to stdout ###
log4j.appender.consoleout=org.apache.log4j.ConsoleAppender
log4j.appender.consoleout.layout=org.apache.log4j.PatternLayout
log4j.appender.consoleout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c:%L - %m%n### direct messages to file myfile.log ###
log4j.appender.myfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myfile.File=logs/myfile.log
log4j.appender.myfile.DatePattern='.'yyyy-MM-dd
log4j.appender.myfile.layout=org.apache.log4j.PatternLayout
log4j.appender.myfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p %c:%L - %m%nlog4j.rootLogger==info,consoleout,myfile

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.demo.hello.provider</groupId><artifactId>log-test</artifactId><version>0.0.1-SNAPSHOT</version><packaging>bundle</packaging><name>log-test</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency><dependency><groupId>org.osgi</groupId><artifactId>org.osgi.core</artifactId><version>4.2.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.felix</groupId><artifactId>maven-bundle-plugin</artifactId><extensions>true</extensions><configuration><instructions><Import-Package>org.apache.log4j,org.osgi.framework.*</Import-Package><Bundle-Activator>com.demo.hello.provider.Activator</Bundle-Activator></instructions></configuration></plugin></plugins></build>
</project>

Activitor

/** * * @author wumingkun* @version 1.0.0* @Description*/package com.demo.hello.provider;import org.apache.log4j.Logger;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;import com.demo.hello.provider.log.LoggerFactory;/*** @author wumingkun**/
public class Activator implements BundleActivator {/* (non-Javadoc)* @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)*/public void start(BundleContext context) throws Exception {Logger logger =LoggerFactory.getLogger(Activator.class);logger.info("bundle start...");}/* (non-Javadoc)* @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)*/public void stop(BundleContext context) throws Exception {}}

LoggerFactory:

/*** * @author wumingkun* @version 1.0.0* @Description 日志工厂类*/package com.demo.hello.provider.log;import java.io.File;import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;/*** @author wumingkun* */
public class LoggerFactory {public static final String CONFIG_DIR = "config";public static final String LOG4J_CONFIG = "myLog4j.properties";private static String fileName = getFileName();public static Logger getLogger(Class clazz) {Logger logger = Logger.getLogger(clazz);loadProperty();return logger;}private static String getFileName() {return System.getProperty("user.dir") + File.separator + CONFIG_DIR+ File.separator + LOG4J_CONFIG;}public static void loadProperty() {PropertyConfigurator.configure(fileName);}
}

部署log-test

在karaf命令行能够看到,例如以下图所看到的:

在karaf_home/logs能够看到生成名为 myfile.log的日志文件

转载于:https://www.cnblogs.com/gccbuaa/p/6792667.html

karaf中利用Bundle引入外部log4j配置文件相关推荐

  1. springboot引入外部yml配置文件

    本文记录下springboot引入外部yml配置文件 文章目录 概述 本文小结 概述 如果不想把所有的配置都写在application.yml文件中,把它拆分成多个yml文件,并在applicatio ...

  2. html中body引入js,ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css...

    今天想在后台封装一下bootstraptree这个插件,引入jquery.js bootstrap.js bootstrap.css bootstrap-tree.js后,我在页面查看脚本错误就连最简 ...

  3. ATS 5.3.0中利用grep得到纯净的配置文件

    ATS 5.3.0中的配置文件通常会标有详细的注释,但是我们有时候需要纯净的配置文件,特别是在线上部署的配置文件,不需要这么详细的注释.下面是处理过程. cat records.config | gr ...

  4. Qt中利用QProcess调用外部cmd.exe执行程序

    1.#include "mainwindow.h"中 添加头文件: #include <QProcess> 添加成员: QProcess *myprocess; 添加槽 ...

  5. ASP.NET MVC中在 @RenderBody() 或者 @Html.Partial()中需要使用引入外部js,css

    今天想在后台封装一下bootstraptree这个插件,引入jquery.js bootstrap.js bootstrap.css bootstrap-tree.js后,我在页面查看脚本错误就连最简 ...

  6. spring配置文件中引入其他的配置文件

    spring配置文件中,如何引入其他的配置文件,如下: <import resource="abc/abc.xml">

  7. spring核心配置文件引入外部properties文件和另外的xml配置文件

    spring核心配置文件引入外部properties文件和另外的xml配置文件 为什么要引入外部文件 我们使用jdbc的时候,会创建一个jdbc.properties配置文件,如果我需要在spring ...

  8. 引入外部化的配置文件

    使用外部属性文件 在配置文件里配置 Bean 时, 有时需要在 Bean 的配置里混入系统部署的细节信息(例如: 文件路径, 数据源配置信息等). 而这些部署细节实际上需要和 Bean 配置相分离 S ...

  9. 论文浅尝 | 在生成式多跳机器阅读任务中引入外部常识知识

    Commonsense for Generative Multi-Hop Question Answering Tasks 链接: https://arxiv.org/abs/1809.06309 背 ...

最新文章

  1. 些许注意事项(初学)
  2. C#---HTML 转文本及HTML内容提取
  3. html改变下拉框的大小,调整屏幕大小时,HTML导航栏下拉框内容无法正确调整大小...
  4. harbor镜像仓库-https访问的证书配置 (docker配置harbor https证书)
  5. javaweb家居用品线上销售系统_智能家居订单管理系统方案设计路线
  6. 第三次学JAVA再学不好就吃翔(part50)--String类练习
  7. java中修饰符的说明
  8. 8位可控加减法电路设计_100以内加减法速算方法,口算速度快一倍
  9. 201509-1-数列分段
  10. Python 下的数据结构实现
  11. UBUNTU安装后的root/su密码问题
  12. 股票交易数据下载 | 下载股票历史交易数据到本地Excel
  13. 企业微信有网页版登录吗?
  14. HTML、css、js 特殊字符(空格符号)
  15. t480 拆触摸板_thinkpadt480 win10电脑触摸板键盘失效怎么修复
  16. 中国AI行业走向:新人胜旧人还是 BAT 牢牢掌握价值链顶端? | 新智元投资领袖论坛...
  17. vue中企业微信 wx.onHistoryBack详解:
  18. 超简单的vue3.0,必看文档
  19. jpg转换成word(如何把jpg转换成word文档)
  20. 使用uview中的u-upload上传图片

热门文章

  1. 网络授时服务 NTP
  2. Asp.net MVC 示例项目Suteki.Shop分析之---Model和Service
  3. flutter闪屏过渡动画,闪光占位动画
  4. [文章存档]Azure上部署的java app在向第三方服务传送中文时出现乱码
  5. Django使用问题记录
  6. 屏幕录像软件Bandicam和oCam
  7. 最大化最小值 | | 最小化最大值
  8. js添加广告模块,随页面移动而移动
  9. c# 之抽象工厂模式
  10. javascript 代码可读性