猿问

从 LoggerFactory 获取日志

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


我有


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 log = LoggerFactory .getLogger(SomeClass.class);获取日志


现在,我的 rootLogger 看起来像


# Root logger 

log4j.rootLogger=info, out, sift, osgi:VmLogAppender 

log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer


三国纷争
浏览 125回答 2
2回答

慕田峪9158850

如果您使用的是 Java EE 应用程序,您应该在某个地方有一个 logback.xml 来决定是否显示您的日志。尝试将这行代码添加到其中:<logger&nbsp;name="net.rubyeye.xmemcached"&nbsp;level="DEBUG"/>它将激活此包中所有类的 DEBUG 日志。如果它仍然不起作用,可能你的类路径中没有该文件,你可能必须将它添加到 jvm 参数中。

手掌心

我的记录器没有问题。我只是没有任何 log.error() 或 log.smth() 所以我的文件中没有任何行。所以它会起作用,例如,在 XMemcachedClient 中的那个方法中public void setTimeoutExceptionThreshold(int timeoutExceptionThreshold) {&nbsp; &nbsp; &nbsp; &nbsp; if (timeoutExceptionThreshold <= 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; throw new IllegalArgumentException(&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Illegal timeoutExceptionThreshold value "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + timeoutExceptionThreshold);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; if (timeoutExceptionThreshold < 100) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; log.warn("Too small timeoutExceptionThreshold value may cause connections disconnect/reconnect frequently.");&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; this.timeoutExceptionThreshold = timeoutExceptionThreshold;&nbsp; &nbsp; }它向我显示“timeoutExceptionThreshold 值太小可能会导致连接断开/重新连接频繁。” 在我的 ${karaf.data}/log/spring/xmemcachedLog.log 中,当timeoutExceptionThreshold < 100
随时随地看视频慕课网APP

相关分类

Java
我要回答