2011-11-16 90 views
1
  1. 如何使slf4j使用少数实现(appenders)如果一个想要登录到控制台和文件都? (类似于使用loj4.properties文件配置log4j)slf4j - 同时登录几个实现

  2. 如何执行我自己的slf4j impl?只是实现接口,它会自动在类路径中找到?

回答

1

SLF4J只是一个简单的门面:“为Java或(SLF4J)简单记录门面作为一个简单的门面或抽象的各种日志框架,例如java.util.logging中,Log4j和的logback,允许最终用户在部署时插入所需的日志记录框架。“(从http://www.slf4j.org/

因此,您还需要一个可以打印或保存日志消息的实现。有一些选择:http://www.slf4j.org/manual.html#swapping我会选择Logback。还请检查logback manual, Chapter 4: Appenders

+0

谢谢你。就我所知,它在运行时(classpath)中搜索阻塞并使用找到的impl。有没有机会使用所有找到的实现,而不是第一个找到的实现?我认为这涉及到slf4j,而不是实现。即使我开发自己的包装impl,将invokeation传递给所有发现的impls,但不保证我的包装将用于类路径上的其他可用impls而不是其他类型的包装 – Anton

0
  1. 你在这里混淆了appenders的实现。一个appender是一个物理日志记录目标(文件,控制台等),它是来自log4j或logback的术语,它们是slf4j 实现。 SLF4J不知道关于appender。

  2. SLF4J设计用于一次执行一个实现。如果你需要使用很多,你必须自己实现org.slf4j.impl.StaticLoggerBinder,并把它放在类路径中作为唯一具有这个名字的类,并在你的类中路由你的日志。不过,我仍然不确定,如果这是你想要的。

+0

谢谢。我知道slf4j的使用本身对我来说几乎没用(我没有使用不同的实现或在它们之间切换)。 – Anton

+0

@ user781137不,我认为这是值得的。它不需要任何费用,只要出现问题,您可以随时切换实施。如果它是一个独立的应用程序,那么在高级exec中你可能没问题。这可能会得心应手。 – MaDa