代码之家  ›  专栏  ›  技术社区  ›  rcreswick

登录Eclipse/OSGi插件

  •  21
  • rcreswick  · 技术社区  · 17 年前

    我已经在插件依赖项中包含了commons日志记录包,事实上,当我记录一些东西(信息或更高的严重性)时,它会记录到控制台。但是,我似乎无法在任何较低级别(如调试或跟踪)进行日志记录。

    以下是log4j.properties文件:

    #  Log4j Logging levels, in order of decreasing importance are:
    #   FATAL, ERROR, WARN, INFO, DEBUG, TRACE
    #
    
    # Root logger option
    log4j.rootLogger=ERROR,stdout
    #,LOGFILE
    
    # Direct log messages to stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %r (%l) %t%n - %m%n
    

    我需要做什么才能真正控制记录器的输出?

    Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
    SEVERE: fatal_message
    Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
    WARNING: warn_message
    Oct 21, 2008 11:01:23 PM com.stottlerhenke.sentinel.client.Activator start
    INFO: info_message
    

    更新:

    我现在尝试了以下各种组合:

    我可以 只有

    我还尝试将上述库的各种配置文件放在许多地方,包括作为插件片段附加到它们各自的库中 here ,但同样的结果还是发生了。

    我已经实现了一个定制的LogListener,并使用System.out.println和调试消息跟踪了日志消息的整个路径(以及我知道的方法) 直到它们被我使用的任何底层日志API输出,它们就会消失。

    2 回复  |  直到 17 年前
        1
  •  23
  •   Community Mohan Dere    8 年前

    三天后。。。

    对于一个包,我在MANIFEST.MF中有以下内容:

    Bundle-ClassPath: lib/jena.jar,
     .,
     org.apache.log4j-1.2.12.jar,
     lib/google-collect-snapshot.jar
    Import-Package: com.acme.client.translation,
     com.acme.translation.interfaces,
     com.acme.shared.osgi,
     com.acme.utilities
    

    那个 这是:

    Bundle-ClassPath: lib/jena.jar,
     .,
     lib/google-collect-snapshot.jar
    Import-Package: com.acme.client.translation,
     com.acme.client.translation.interfaces,
     com.acme.shared.osgi,
     com.acme.utilities,
     org.apache.log4j
    

    工作,算是吧。它显然找到了一些eclipse级别的log4j配置,并利用了这些配置。因为它只是一个jar(不是一个包),所以它没有使用任何可以指定自定义日志配置的片段,这就导致了另一件必须发生的事情:

    我需要设置一个bundle片段来指定日志配置。 This link 从…起 VonC 给了我这样做的信息。这需要做很多事情,不幸的是,MANIFEST.MF不正确的包仍然在Bundle类路径中指定了log4jjar,这似乎覆盖了导入包列表。

    我欠你一大笔钱 巨大的 多亏了这本书的作者 Eclipse Zone , 沃克 , Ekkes ,以及#eclipse on freenode中的每个人,感谢他们的帮助和耐心:)

        2
  •  18
  •   Robert Munteanu    12 年前

    这不是你问题的实际答案,但你可能会从中找到一些线索 set of articles by ekke .

    Using Log4J in Eclipse Equinox/OSGi ":

    您是否在控制台模式下启动osgi会话?

    java -jar org.eclipse.osgi_3.3.0.v20070530.jar -console -noExit -clean
    

    如果您找到了解决方案,请让use知道(将其作为答案发布),我将投票支持;)