Eclipse插件中的SLF4J登录

一直都在使用Maven和纯Java库进行开发,我从没想过在开发Eclipse插件时发出一些日志语句可能会成为问题。 但是,在Eclipse开发人员的想象中,一切似乎总是在Eclipse环境中,而Eclipse宇宙之外则什么都没有。

如果您使用Google搜索上述标题,您会发现的第一篇文章是有关“平台日志记录工具”的文章。 但是第三库呢? 他们不能使用基于Eclipse的日志框架。

在我的库中,我使用SLF4J API,让用户自己决定要使用哪种日志记录实现(Log4J,Logback,JDK)。 这正是我要在Eclipse中执行的操作。 很难确切地知道该怎么做,但这是这个难题的一部分。

阶段1:开发

这描述了自定义插件开发阶段的步骤。

步骤1:将您的库放入P2存储库

您要在Eclipse中使用的所有内容都必须从P2存储库中安装。 但是我使用的大多数库都在Maven存储库中。 据我所知,没有像“ Maven Central”这样的主P2存储库,而且我在P2存储库中找到的所有库都相当老。 因此,您必须自己创建一个。

幸运的是,有一个名为p2-maven-plugin的Maven 插件可以将您所有的Maven JAR转换为单个P2存储库。 您可以将插件上传到网站的文件夹,也可以直接从本地硬盘安装。

对于此示例,您将需要以下库:

  • org.slf4j:slf4j-api:1.6.6
  • org.slf4j:slf4j-log4j12:1.6.6
  • log4j:log4j:1.2.17
  • org.ops4j.pax.logging:pax-logging-api:1.7.0
  • org.ops4j.pax.logging:pax-logging-service:1.7.0
  • org.ops4j.pax.confman:pax-confman-propsloader:0.2.2

格式“ groupId:artifactid:version”与“ p2-maven-plugin”所使用的格式相同。 要跳过此步骤,您还可以使用http://www.fuin.org/p2-repository/ 。

步骤2:在Eclipse IDE中安装SLF4J API

  1. 选择“帮助/安装新软件...”。
    Eclipse /帮助/安装
  2. 添加P2存储库URL并安装“ slf4j-api”-您可以直接将步骤1中的文件夹与文件URL一起使用,例如:“ file:/ pathtoyour / p2-repository /”。 Instal Slf4J API
  3. 将新安装的“ slf4j.api”添加到您的MANIFEST.MF。 MANIFEST.MF中的依赖项
  4. 照常开始使用SLF4J登录代码。

阶段2:生产

这描述了自定义插件的用户必须完成的任务才能开始使用Log4J进行日志记录。 以下假设您的自定义插件已安装。

步骤1:在Eclipse IDE中安装日志库

  1. 选择“帮助/安装新软件...”。 Eclipse /帮助/安装
  2. 从Eclipse更新站点安装“ Equinox目标组件”。 安装Equinox目标组件
  3. 添加P2存储库URL并安装以下插件:
    • Apache Log4j
    • OPS4J Pax ConfMan –属性加载器
    • OPS4J Pax日志记录–API
    • OPS4J Pax日志记录-服务

    安装日志库

步骤2:配置PAX日志记录

  1. 在“ eclipse.ini”中将日志配置的位置设置为“ vmarg '
    -vmargs
    -Xms40m
    -Xmx512m
    -Dbundles.configuration.location=<config-dir>
    

  2. 在上面的“ config-dir”中创建一个名为“ services”的文件夹。
  3. 在“服务”中创建名为“ org.ops4j.pax.logging.properties”的Log4J属性。
    log4j.rootLogger=INFO, FILE
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=<path-to-your-log> /example.log
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n
    log4j.logger.your.package=DEBUG

步骤3:激活PAX日志记录

  1. 打开“控制台”视图。 显示控制台视图
  2. 选择“主机OSGI控制台”。 选择OSGI控制台
  3. 启动以下捆绑包:
    start org.eclipse.equinox.cm
    start org.ops4j.pax.logging.pax-logging-api
    start org.ops4j.pax.logging.pax-logging-service
    start org.ops4j.pax.configmanager

    开始记录捆绑

现在,您应该能够在配置的“ example.log”文件中看到您的日志语句。

步骤4:更改配置

如果要更改“ org.ops4j.pax.logging.properties”中的配置,只需在OSGI控制台中重新启动PAX Configmanager:

stop org.ops4j.pax.configmanager
start org.ops4j.pax.configmanager

祝您伐木愉快!

参考:来自A Java Developer's Life博客的JCG合作伙伴 Michael Schnell的SLF4J登录Eclipse插件 。

翻译自: https://www.javacodegeeks.com/2013/01/slf4j-logging-in-eclipse-plugins.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/370123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS(四)

css元素溢出 当子元素的尺寸超过父元素的尺寸时&#xff0c;需要设置父元素显示溢出的子元素的方式&#xff0c;设置的方法是通过overflow属性来设置。 overflow的设置项&#xff1a; 1、visible 默认值。内容不会被修剪&#xff0c;会呈现在元素框之外。2、hidden 内容会被修…

mysql排名

转载自思心思危http://www.cnblogs.com/zengguowang/p/5541431.html 一、sql1&#xff5b;不管数据相同与否&#xff0c;排名依次排序&#xff08;1,2,3,4,5,6,7.....&#xff09;&#xff5d; SELECTobj.user_id,   obj.score,  rownum : rownum 1 AS rownum FROM(SELECT…

python中变量名后的逗号_深入浅析python变量加逗号,的含义

逗号,用于生成一个长度为1的元组>>> (1)1>>> (1,)(1,)>>> 1,(1,)因此需要将长度为1的元组中元素提取出来可以用,简化赋值操作>>> a(1,)>>> ba>>> b(1,)>>> b,a>>> b1最后print打印变量加,实现连续打印…

广告的显示和关闭

app或游戏的主页显示广告页面&#xff0c;实现方式&#xff1a; public class MainActivity extends Activity implements View.OnClickListener{private Button btnShowAd;private RelativeLayout layoutAd;Overrideprotected void onCreate(Bundle savedInstanceState) {supe…

android签到功能模块,基于android的课堂签到系统.doc

基于android的课堂签到系统本科毕业论文(设计)题 目 基于Android的课堂签到系统学生姓名 XXX指导教师 XX学 院 信息科学与工程学院专业班级 计算机科学与技术0908班完成时间 2013年5月 摘 要在大学课堂中&#xff0c;签到问题一直困扰着老师和同学们。传统课堂签到的手段大多是…

Java EE 7社区调查结果!

在JSR 342下可以继续进行Java EE 7的工作。一切进展顺利&#xff0c;Java EE 7现在处于“初稿审查”阶段。 在11月初&#xff0c; Oracle发布了一个有关即将推出的Java EE 7功能的小型社区调查 。 昨天结果公布了。 超过1,100名开发人员参加了调查&#xff0c;并且几乎对每个问…

CSS(三)

CSS盒子模型 盒子模型解释 元素在页面中显示成一个方块&#xff0c;类似一个盒子&#xff0c;CSS盒子模型就是使用现实中盒子来做比喻&#xff0c;帮助我们设置元素对应的样式。盒子模型示意图如下&#xff1a; 把元素叫做盒子&#xff0c;设置对应的样式分别为&#xff1a;盒…

一道关于运行顺序题

function foo(){   getName function(){console.log(1)}   return this } foo.getName function(){console.log(2)} foo.prototype.getName function(){console.log(3)} var getName function(){console.log(4)} function getName(){console.log(5)} foo.getName()//2 …

android+小米文件管理器源码,小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类...

从本篇开始&#xff0c;讲解net.micode.fileexplorer.util工具包中的类。这个包下的类&#xff0c;功能也比较单一和独立。很多代码的思想和实现&#xff0c;可以用于JavaWeb和Android等多种环境中。一、单实例活动管理器ActivitiesManager一个单实例的活动管理器&#xff0c;从…

移动优先的响应式布局

前面的话 随着移动互联网的兴起&#xff0c;不同设备的分辨率相差较大&#xff0c;如果在不同的设置上显示同一个页面&#xff0c;则用户体验差。响应式网页设计是一种方法&#xff0c;使得一个网站能够兼容多个终端&#xff0c;而不用为每个终端制作特定的版本。它使得一个网站…

python中英文字符和中文字符存储长度不同_Django如何正确截取中英混合字符串及表单中限制中文字符中长度...

中文字符和英文字符所占的字节长度是不一样&#xff0c;一个是2个字节&#xff0c;一个是1个字节&#xff0c;这给我们用英文的web框架开发中文app带来了麻烦。比如Django自带过滤器truncatewords并不支持截取中文&#xff0c;另外模型中CharField中的max_length选项用于限制中…

使用RESTful客户端API进行GET / POST

互联网上有很多如何使用RESTful Client API的东西。 这些是基础。 但是&#xff0c;尽管该主题看起来微不足道&#xff0c;但仍然存在一些障碍&#xff0c;尤其是对于初学者而言。 在这篇文章中&#xff0c;我将尝试总结我的专业知识&#xff0c;以及我如何在实际项目中做到这…

南昌互联网行业协会筹办者祝真和华罡团队-2014年12月江西IDC排行榜

&#xfeff;&#xfeff;他出自军营&#xff0c;拥有一身正气。 他在南昌创业&#xff0c;立意卓越。 从站点開始、到微营销、到线上教育&#xff0c;全面开花。 他在朋友圈看到不对的内容&#xff0c;就会即时批评。 他对朋友&#xff0c;又是很的和蔼可亲。 他就是南昌华罡网…

Linux下查看某个进程的网络带宽占用情况

说明&#xff1a; 1、可能查看某个进程的带宽占用需要明确知道PID、进程名字、发送速度、接收速度。 2、很遗憾&#xff0c;在Linux原生的软件中没有这样的一款&#xff0c;只能额外装&#xff0c;最符合以上的情况就只有nethogs。 3、nethogs可以指定网卡&#xff0c;但是不能…

android中的add方法,Android入门之addWindow

前面说到&#xff0c;应用程序添加窗口时&#xff0c;会在本地创建一个ViewRoot&#xff0c;然后通过IPC(进程间通信)调用WmS的Session的addWindow请求WmS创建窗口&#xff0c;下面来看看addWindow方法。addWindow方法定义在frameworks/base/services/java/com.android.server.…

CSS属性速查表

前面的话 本文将按照布局类属性、盒模型属性、文本类属性、修饰类属性这四个分类&#xff0c;对CSS常用属性进行重新排列&#xff0c;并最终设置为一份stylelintrc文件 布局类 1、定位 positionz-indextopbottomleftright 2、浮动 floatclear 3、多列布局 columnscolumns-width…

我应该使用32位还是64位JVM?

这是我在企业软件开发生涯中多次遇到的问题。 我不得不每隔一段时间就提供有关配置特定新环境的建议。 而且&#xff0c;很多时候&#xff0c;手头的问题与“我应该使用32位或64位JVM”有关。 老实说&#xff0c;一开始我只是掷硬币。 而不是给出合理的答案。 &#xff08;对不…

python安装pyecharts清华_基于Python安装pyecharts所遇的问题及解决方法

最近学习到数据可视化内容&#xff0c;老师推荐安装pyecharts&#xff0c;于是pip install 了一下&#xff0c;结果...掉坑了&#xff0c;下面是我的跳坑经验&#xff0c;如果你有类似问题&#xff0c;希望对你有所帮助。第一个坑:这个不难理解&#xff0c;缺少pyecharts-jupyt…

C语言内存分配

C语言内存分配 C语言的内存分配主要有5个区域&#xff1a; 1、栈区&#xff1a;在运行函数时&#xff0c;函数内的局部变量&#xff08;不包含static变量&#xff09;、函数返回值的存储单元在栈区上创建。函数运行结束时这些存储单元自己主动被释放。栈区内存分配运算内置于处…

在Ajax方式产生的浮动框中,点击选项包含某个关键字的选项

#!usr/bin/env python #-*- coding:utf-8 -*- """ author: sleeping_cat Contact : zwy24zwy163.com """ #在Ajax方式产生的浮动框中&#xff0c;点击选项包含某个关键字的选项 #通过模拟键盘下箭头进行选择悬浮框选项from selenium imp…