从 LoggerFactory 获取日志
Get log from 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);
其实,我想准确记录那个class并不重要。在我的应用程序中,我还有其他 classes 具有 LoggerFactory.getLogger(...);
主要问题是
如何从 Logger log = LoggerFactory 获取日志
.getLogger(SomeClass.class);
现在,我的 rootLogger 看起来像
# Root logger
log4j.rootLogger=info, out, sift, osgi:VmLogAppender
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
如果您使用的是 java EE 应用程序,您应该有一个 logback.xml 决定是否显示您的日志的地方。
尝试在其中添加这行代码:
<logger name="net.rubyeye.xmemcached" level="DEBUG"/>
它将激活此包中所有 类 的 DEBUG 日志。
如果它仍然不起作用,可能你的类路径中没有该文件,你可能必须将它添加到 jvm 参数中。
我的记录器没有问题。我只是没有任何 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 < 100
可能这么简单,但我已经浪费了很多时间来寻找任何解决方案。
我有
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);
其实,我想准确记录那个class并不重要。在我的应用程序中,我还有其他 classes 具有 LoggerFactory.getLogger(...);
主要问题是 如何从 Logger log = LoggerFactory 获取日志 .getLogger(SomeClass.class);
现在,我的 rootLogger 看起来像
# Root logger
log4j.rootLogger=info, out, sift, osgi:VmLogAppender
log4j.throwableRenderer=org.apache.log4j.OsgiThrowableRenderer
如果您使用的是 java EE 应用程序,您应该有一个 logback.xml 决定是否显示您的日志的地方。
尝试在其中添加这行代码:
<logger name="net.rubyeye.xmemcached" level="DEBUG"/>
它将激活此包中所有 类 的 DEBUG 日志。 如果它仍然不起作用,可能你的类路径中没有该文件,你可能必须将它添加到 jvm 参数中。
我的记录器没有问题。我只是没有任何 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 < 100