从LoggerFactory获取日志

时间:2019-05-15 13:28:15

标签: java log4j slf4j

这可能是如此简单,但是我已经浪费了很多时间来寻找任何解决方案。

我有

package net.rubyeye.xmemcached;

...
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...

public class XMemcachedClient implements XMemcachedClientMBean, MemcachedClient {

    private static final Logger log = LoggerFactory
            .getLogger(XMemcachedClient.class);
....

使用Log4j,我从apache-servicemix中获取所有日志。

我尝试过类似的事情

log4j.logger.net.rubyeye.xmemcached.XMemcachedClient=All, xmemcachedLog

log4j.appender.xmemcachedLog=org.apache.log4j.RollingFileAppender
log4j.appender.xmemcachedLog.File=${karaf.data}/log/spring/xmemcachedLog.log
log4j.appender.xmemcachedLog.ImmediateFlush=true
log4j.appender.xmemcachedLog.maxFileSize = 10MB
log4j.appender.xmemcachedLog.maxBackupIndex = 10
log4j.appender.xmemcachedLog.layout=org.apache.log4j.PatternLayout
log4j.appender.xmemcachedLog.layout.ConversionPattern=%d{dd-MM-yyyy_HH:mm:ss} %-5p [%t] - %m%n

但是我什么也没得到。我想获取有关在1335行获得的异常的信息

key = this.preProcessKey(key);

实际上,我要完全记录该类并不重要。在我的应用程序中,我还具有其他类,这些类具有LoggerFactory.getLogger(...);

主要问题是 如何从 Logger日志= LoggerFactory获取日志             .getLogger(SomeClass.class);

现在,我的rootLogger看起来像

# Root logger 
log4j.rootLogger=info, out, sift, osgi:VmLogAppender 
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer

2 个答案:

答案 0 :(得分:0)

如果您使用的是Java EE应用程序,则应该在某个地方有一个logback.xml来决定是否显示日志。

尝试将以下代码行添加到其中:

<logger name="net.rubyeye.xmemcached" level="DEBUG"/>

它将为该软件包中的所有类激活DEBUG日志。 如果仍然无法正常运行,则可能是您的类路径中没有该文件,您可能必须将其添加到jvm参数中。

答案 1 :(得分:0)

我的记录器没有问题。我只是没有任何log.error()或log.smth(),所以我的文件中没有任何行。

例如,它可以在XMemcachedClient内部的该方法中工作

public void setTimeoutExceptionThreshold(int timeoutExceptionThreshold) {
        if (timeoutExceptionThreshold <= 0) {
            throw new IllegalArgumentException(
                    "Illegal timeoutExceptionThreshold value "
                            + timeoutExceptionThreshold);
        }
        if (timeoutExceptionThreshold < 100) {
            log.warn("Too small timeoutExceptionThreshold value may cause connections disconnect/reconnect frequently.");
        }
        this.timeoutExceptionThreshold = timeoutExceptionThreshold;
    }

它向我显示“太小timeoutExceptionThreshold值可能导致连接频繁断开/重新连接。” timeoutExceptionThreshold <100时,在我的$ {karaf.data} /log/spring/xmemcachedLog.log中