标签: slf4j

SLF4J,通用日志记录,控制台输出

我有这个第三方图书馆:

  • SLF4J-API-1.5.5.jar
  • SLF4J-jdk14-1.5.5.jar
  • JCL-过SLF4J-1.5.5.jar

我想针对这个库编写一些测试并查看它的日志输出,我不想再添加任何日志库(没有log4j或其他任何东西).

据我所知,SLF4J和通用日志都记录抽象性,因此我可能需要写我自己的简单具体记录器(或许不是,因为JCL-过SLF4J包括org.apache.commons.logging.impl.SimpleLog?).如果是这样,我应该实现哪些接口,更重要的是,如何设置SL4J/Common Logging以在我的测试中使用我的记录器?我在SLF4J文档中读到我必须修改StaticLoggerBinder类 ...这是否真的意味着我实际上必须下载SLF4J源代码,修改类并重新编译它?

java apache-commons slf4j apache-commons-logging

1
推荐指数
1
解决办法
6132
查看次数

SLF4J Logger有时会清除控制台输出(不需要的)

我正在使用SLF4J + Logback将消息输出到eclipse IDE控制台.

Logger LOG = LoggerFactory.getLogger(MyClass.class);
LOG.debug("test");
Run Code Online (Sandbox Code Playgroud)

但有时整个控制台输出被清除,我看不到更旧的消息.这是足够的信息,以便你可以帮助我吗?

java eclipse console logback slf4j

1
推荐指数
1
解决办法
512
查看次数

1
推荐指数
1
解决办法
4233
查看次数

登录配置文件

我是新登录用户,并且有一个一般性问题。我将在Eclipse中进行开发,并且想知道将配置文件放置在哪里。例如我的类Test.java位于ProjectName / src / default package / Test.java中

我在哪里放置配置文件?我需要创建一个新文件夹还是将其放置在同一位置?

logback slf4j

1
推荐指数
1
解决办法
3735
查看次数

无法实例化SLF4J LoggerFactory

所以,

我正在使用这个BONECP示例:

package javasampleapps;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import com.jolbox.bonecp.BoneCP;
import com.jolbox.bonecp.BoneCPConfig;
/** A test project demonstrating the use of BoneCP in a JDBC environment.
 * @author wwadge
 */
public class BoneCPExample {
    /** Start test
     * @param args none expected.
     */
    public static void main(String[] args) {
        BoneCP connectionPool = null;
        Connection connection = null;
        try {
            // load the database driver (make sure this is in your classpath!)
            Class.forName("com.mysql.jdbc.Driver");
        } catch (Exception …
Run Code Online (Sandbox Code Playgroud)

mysql jdbc slf4j bonecp

1
推荐指数
1
解决办法
1万
查看次数

与slfj4的NoSuchMethodError

我正在尝试使用Solr与slfj4和logback,当我用CTRL + C关闭Solr时,我收到此错误:

 java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
Run Code Online (Sandbox Code Playgroud)

这在编译期间不会发生.

我在版本1.6.4中检查了org.slf4j.spi.LocationAwareLogger.log的方法签名,它似乎是正确的:

  public void log(Marker marker, String fqcn, int level, String message, Object[] argArray, Throwable t);
Run Code Online (Sandbox Code Playgroud)

完整的堆栈跟踪:

2012-04-27 12:02:09.806 [Shutdown] ERROR o.a.s.h.c.HttpShardHandlerFactory - java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
        at org.apache.commons.logging.impl.SLF4JLocationAwareLog.debug(SLF4JLocationAwareLog.java:133
)
        at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.shutdown(ThreadSafeClientConnManager.java:282)
        at org.apache.solr.handler.component.HttpShardHandlerFactory.close(HttpShardHandlerFactory.java:172)
        at org.apache.solr.core.CoreContainer.shutdown(CoreContainer.java:599)
        at org.apache.solr.servlet.SolrDispatchFilter.destroy(SolrDispatchFilter.java:124)
        at org.mortbay.jetty.servlet.FilterHolder.destroyInstance(FilterHolder.java:127)
        at org.mortbay.jetty.servlet.FilterHolder.doStop(FilterHolder.java:107)
        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76)
        at org.mortbay.jetty.servlet.ServletHandler.doStop(ServletHandler.java:176)        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76)
        at org.mortbay.jetty.handler.HandlerWrapper.doStop(HandlerWrapper.java:142)
        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76)
        at org.mortbay.jetty.handler.HandlerWrapper.doStop(HandlerWrapper.java:142)        at org.mortbay.jetty.servlet.SessionHandler.doStop(SessionHandler.java:125)
        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76)
        at org.mortbay.jetty.handler.HandlerWrapper.doStop(HandlerWrapper.java:142)
        at org.mortbay.jetty.handler.ContextHandler.doStop(ContextHandler.java:592)        at org.mortbay.jetty.webapp.WebAppContext.doStop(WebAppContext.java:537)
        at org.mortbay.jetty.plugin.Jetty6PluginWebAppContext.doStop(Jetty6PluginWebAppContext.java:1
23)
        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76)        at org.mortbay.jetty.handler.HandlerCollection.doStop(HandlerCollection.java:169)
        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76)
        at org.mortbay.jetty.handler.HandlerCollection.doStop(HandlerCollection.java:169)
        at org.mortbay.component.AbstractLifeCycle.stop(AbstractLifeCycle.java:76) …
Run Code Online (Sandbox Code Playgroud)

java solr slf4j maven

1
推荐指数
1
解决办法
1万
查看次数

外部库的Logging-Strategy(slf4j?)

我想提供一个客户端库,用于将rest-request包装到服务器并记录错误,以便客户端可以在他的应用程序中使用它并查看日志.(还有一个问题,我是否应该只记录错误或重新抛出它.当我使用异步调用(多线程)时,这可能非常棘手..)

我读到slf4j可能会有所帮助,因为使用该库的客户端可以选择他喜欢的日志框架.

有些人对这个slf4j事情感到困惑.如果他得到我的库并且我只是提供,让我们说slf4j-api,将抛出错误,因为不包括SLF4J绑定.解决方案可能是他必须自己包含绑定,问题是他是否愿意阅读README来获取这些重要信息.

如果我包含一个"标准"-slf4j绑定(例如简单的绑定),则应用程序无法"覆盖"此操作,因为类路径上只允许一个绑定.任何时候它都不会灵活

所以我想只使用log4j并忘记其他所有日志框架.我可能会认为这个问题很复杂,也许有人可能会帮我解决这个问题?

java logging log4j jar slf4j

1
推荐指数
1
解决办法
1496
查看次数

如何通过运行时路径(工作目录)XML文件配置Log4j2,而不是类路径

我不能配置Log4j2读取XML文件的配置在工作目录.

我试图设置系统属性,因为文档说:

Log4j将检查"log4j.configurationFile"系统属性,如果设置,将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置

使用Main类静态初始化程序块,也在main方法中,具有相对和绝对路径:

  • System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "E:/log4j2.xml");

  • System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "./log4j2.xml");

  • System.setProperty(XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY, "log4j2.xml");

另外随着"log4j.configurationFile"代替XMLConfigurationFactory.CONFIGURATION_FILE_PROPERTY并没有什么的的作品.

只有将XML添加到我的类路径中并将其放在src目录中时,此配置才有效.我想通过编辑工作目录中的XML文件来允许编译后的lightweid配置.

使用的依赖项:

java logging log4j slf4j log4j2

1
推荐指数
1
解决办法
5636
查看次数

maven找不到slf4j rollingfileappender

我遇到一个问题,maven在运行JUnit测试时没有找到slf4j类:

22:20:05,412 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
22:20:05,412 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback-test.xml] at [file:/home/ram/src/2dd/java/dd2/target/test-classes/logback-test.xml]
22:20:05,526 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.RollingFileAppender]
22:20:05,527 |-ERROR in ch.qos.logback.core.joran.action.AppenderAction - Could not create an Appender of type [ch.qos.logback.core.RollingFileAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type ch.qos.logback.core.RollingFileAppender
Run Code Online (Sandbox Code Playgroud)

但是,slf4j jar文件正被添加到类路径中:

[DEBUG] test classpath classpath:
[DEBUG]   /home/ram/src/2dd/java/dd2/target/test-classes
[DEBUG]   /home/ram/src/2dd/java/dd2/target/classes
[DEBUG]   /home/ram/.m2/repository/junit/junit/4.11/junit-4.11.jar
[DEBUG]   /home/ram/.m2/repository/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar
[DEBUG]   /home/ram/.m2/repository/com/fallabs/kyotocabinet-java/1.24/kyotocabinet-java-1.24.jar
[DEBUG]   /home/ram/.m2/repository/ch/qos/logback/logback-classic/1.0.13/logback-classic-1.0.13.jar
[DEBUG]   /home/ram/.m2/repository/ch/qos/logback/logback-core/1.0.13/logback-core-1.0.13.jar
[DEBUG]   /home/ram/.m2/repository/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar
[DEBUG] provider classpath classpath:
[DEBUG]   /home/ram/.m2/repository/org/apache/maven/surefire/surefire-junit4/2.12.4/surefire-junit4-2.12.4.jar …
Run Code Online (Sandbox Code Playgroud)

java slf4j maven

1
推荐指数
1
解决办法
4417
查看次数

SLF4J - 它如何知道要使用的日志类型

SLF4J是一个包装器/外观类,因此您可以使用许多不同的日志类型,例如logback,log4j等.假设我想使用logback和log4j,甚至第三个类似java.util.logging.当我写这样的日志:

    public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}
Run Code Online (Sandbox Code Playgroud)

我怎么知道它使用哪个日志框架?假设我希望它使用logback进行此调用,我怎么知道它不使用另一个框架?

java logback slf4j

1
推荐指数
1
解决办法
642
查看次数