Tag: slf4j

如何用logback创build2个不同的ROOTlogging器?

我很高兴地使用SLF4J和logback,并为ROOTlogging器使用了2个appender 。 <root level="DEBUG"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> 我们怎么能为两个appender有不同的日志级别? 我仍然需要所有ROOTlogging器消息。 DEBUG – 标准输出 INFO级别的文件 所有日志都需要成为输出的一部分(所以需要ROOTlogging器)。 所有的帮助是热烈的赞赏。 谢谢。

JUL到SLF4J桥

我目前观察到第三方库(即restfb)正在使用java.util.logging,我看到这些日志最终在STDOUT,即使我没有在我的logback.xml中configuration的SLF4J控制台appender。 我的classpath中也有jul-to-slf4j桥。 jul-to-slf4j bridge是否只在日志logging到stdout的时候才loginlogbackconfiguration的appender?

Log4j 2.0和SLF4J以及Java日志框架永无止境的未来

所以我今天刚刚发现Log4J 2.0现在正在积极开发中,有一个alpha版本,据说取代了logback。 现在在我的应用程序,我有接近4或许更多的日志框架: Java Util日志logging log4j的 SLF4J logback(忽略感谢提供黑客的maven) 公共日志logging(忽略感谢提供黑客的maven) 而tomcat有它自己的JULI适配器 我一直在使用log4j(1.2.x),坦率地说,我只是不需要更新的人的function ,但我最近试图切换到SLF4J,主要是因为我不想重写我复杂的log4jconfiguration文件到一个新的格式 (logback)。 现在我的问题是,我应该针对的是SLF4J是log4j 2.0未来的正确select。 似乎我应该坚持使用旧的log4j( 1.2.x ),因为它是最低的共同点? 更新:在进一步检查log4j 2.0而非常类似的情况下,它的configuration与log4j 1.2不兼容。 看起来像logback是最好的select。

logging器slf4j格式化的优点是{}而不是string连接

有没有使用{}而不是string连接的优势? 来自slf4j的一个例子 logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT); 代替 logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT); 我认为这是关于速度优化,因为参数评估(和string连接)可以在运行时避免取决于configuration文件。 但是只有两个参数是可能的,有时除了string连接之外没有别的select。 对这个问题需要看法。

如何获得使用log4j的SLF4J“Hello World”?

SLF4J的“Hello World”例子对我来说不起作用。 我想这是因为我添加了slf4j-log4到我的类path。 我应该直接configurationlog4j让hello世界起作用吗? log4j:WARN No appenders could be found for logger (HelloWorld). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 更新 :我添加了log4j初始化,它仍然无法正常工作: public static void main(String[] params) { org.apache.log4j.Logger.getRootLogger().addAppender(new ConsoleAppender()); Logger logger = org.slf4j.LoggerFactory.getLogger(TestBase.class); logger.info("Hello World"); } 我得到: log4j:ERROR No output stream or file set for the appender named […]

为什么每次调用LoggerFactory.getLogger(…)都不推荐?

我已经阅读了大量的post和文档(在本站和其他地方),指出推荐的SFL4J日志logging模式是: public class MyClass { final static Logger logger = LoggerFactory.getLogger(MyClass.class); public void myMethod() { //do some stuff logger.debug("blah blah blah"); } } 我的老板更喜欢我们只是使用包装来拦截日志调用,并避免锅炉板代码在每个类上声明logging器: public class MyLoggerWrapper { public static void debug(Class clazz, String msg){ LoggerFactory.getLogger(clazz).debug(msg)); } } 并简单地使用它是这样的: public class MyClass { public void myMethod() { //do some stuff MyLoggerWrapper.debug(this.getClass(), "blah blah blah"); } […]

NoClassDefFoundError:org / slf4j / impl / StaticLoggerBinder

我试图运行这里给出的示例瓷砖示例。 以下是我的POM.xml: <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-api</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-core</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>org.apache.tiles</groupId> <artifactId>tiles-jsp</artifactId> <version>2.1.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.2</version> </dependency> 当我试图运行该示例下面的错误引发: Sep 17, 2010 11:59:43 PM org.apache.catalina.core.StandardContext listenerStart SEVERE: Error configuring application listener of class org.apache.tiles.web.startup.TilesListener java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder at org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:131) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:685) […]

我如何configurationSpring和SLF4J,以便能够logging日志?

我有一个我想login的maven&spring应用程序。我很想使用SLF4J。 我想把我所有的configuration文件放到一个目录{classpath} / config中,包括log4j.xml,然后使用spring bean进行init。 例如 <bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="org.springframework.util.Log4jConfigurer"/> <property name="targetMethod" value="initLogging"/> <property name="arguments"> <list> <value>classpath:config/log4j.xml</value> </list> </property> </bean> 但是,我得到这个警告,并没有logging。 log4j:WARNlogging器(org.springframework.context.support.ClassPathXmlApplicationContext)找不到appender。 log4j:WARN请正确初始化log4j系统。 log4j:WARN请参阅http://logging.apache.org/log4j/1.2/faq.html#noconfig了解更多信息。 我search了一下,找不到一个简单的例子来设置这个。 有任何想法吗?

Log4j被弃用于Slf4j吗?

似乎log4j有一些类加载问题 (其中包括),在我看来,趋势是走出log4j走向slf4j。 (hibernate停止使用第一个赞成后者) 这是真的吗? log4j中slf4j解决的主要问题是什么? 是slf4j的最后一句话还是有更好的“下一个log4j”行业标准? 这是我第一个问题,所以请温柔 更新: 所以这个delfuego的回答迷惑了我,你能接受/反对吗? 你似乎偶然发现了log4j(和Apache Commons Logging库)的主要问题,也就是说,他们正在使用正确的类加载器,发现并与之交互,这是一个荒谬的难题。 这里有一个非常密集的解释,并附有例子。 新的日志框架SLF4J的主要推动力之一就是完全消除这些问题。 你可能想要交换,看看你的生活是否更容易。 更多的类加载log4j的问题: http : //articles.qos.ch/classloader.html

如何用SLF4J的占位符loginexception和消息

使用SLF4Jlogging错误消息和exception的正确方法是什么? 我试过这样做,但从不打印exception堆栈跟踪: logger.error("Unable to parse data {}", inputMessage, e); 在这种情况下,我希望使用inputMessage填充{} ,并注销exceptioninputMessage 。 我能看到做到这一点的唯一方法是做到这一点: logger.error("Unable to parse data " + inputMessage, e); 这不是很漂亮。