iapp用网站做的APP无法加载,joomla做的网站,德阳响应式网站建设,南京网站制作西安将slf4j库用作Java应用程序日志记录API层有很多好处。 在这里#xff0c;我将展示一些示例#xff0c;说明如何与不同的记录器一起使用和配置它。 您可以将slf4j视为Java接口#xff0c;然后在运行时需要一个实现#xff08;仅一个#xff09;来提供实际的日志记录详细信… 将slf4j库用作Java应用程序日志记录API层有很多好处。 在这里我将展示一些示例说明如何与不同的记录器一起使用和配置它。 您可以将slf4j视为Java接口然后在运行时需要一个实现仅一个来提供实际的日志记录详细信息例如写入STDOUT或文件等。每个日志记录实现或称为绑定都将显然它们具有配置日志输出的方式但是您的应用程序将保持不可知状态并始终使用相同的org.slf4j.Logger API。 让我们看看这在实践中是如何工作的。 在简单记录器中使用 在pom.xml创建一个基于Maven的项目。 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion1.7.5/version/dependency 现在您可以像这样在Java代码中使用Logger 。 package deng;
import org.slf4j.*;
public class Hello {static Logger LOGGER LoggerFactory.getLogger(Hello.class);public static void main(String[] args) {for (int i 0; i 10; i)if (i % 2 0)LOGGER.info(Hello {}, i);elseLOGGER.debug(I am on index {}, i);}
} 上面的代码将编译您的程序但是当您运行它时您将看到这些输出。 bash java deng.Hello
SLF4J: Failed to load class org.slf4j.impl.StaticLoggerBinder.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 这就是说在运行时您缺少日志记录“实现”或记录器绑定因此slf4j仅使用“ NOP”实现而没有执行任何操作。 为了正确查看输出您可以尝试使用根本不需要任何配置的简单实现 只需返回您的pom.xml并添加以下内容 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-simple/artifactIdversion1.7.5/version/dependency 现在您将看到在INFO级别的STDOUT上记录输出。 这个简单的记录器将默认显示任何INFO级别或更高级别的消息。 为了查看DEBUG消息您需要在Java启动时传递此系统属性-Dorg.slf4j.simpleLogger.defaultLogLevelDEBUG 。 在Log4j记录器中使用 现在我们可以尝试并交换不同的记录器实现但是您的应用程序代码可以保持不变。 我们需要的是用另一个流行的记录器实现例如Log4j替换slf4j-simple 。 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion1.7.5/version/dependency 同样我们必须为选择的每个实现配置日志记录。 在这种情况下我们需要一个src/main/resources/log4j.properties文件。 log4j.rootLoggerDEBUG, STDOUTlog4j.logger.dengINFOlog4j.appender.STDOUTorg.apache.log4j.ConsoleAppenderlog4j.appender.STDOUT.layoutorg.apache.log4j.PatternLayoutlog4j.appender.STDOUT.layout.ConversionPattern%5p [%t] (%F:%L) - %m%n 重新运行您的程序您应该会看到类似的输出。 将 JDK实际上附带了一个记录程序包您可以使用此记录程序实现替换pom.xml 。 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-jdk14/artifactIdversion1.7.5/version/dependency 现在JDK日志记录的配置有点难以使用。 不仅需要一个配置文件例如src/main/resources/logging.properties 而且您还需要添加一个系统属性-Djava.util.logging.config.filelogging.properties 以便它进行选择。起来 这是一个入门的示例 等级 INFO handlersjava.util.logging.ConsoleHandler
java.util.logging.ConsoleHandler.levelFINEST
deng.levelFINEST结合使用 logback记录器实现是超级dupa质量实现。 如果您打算编写投入生产的严肃代码则可能需要评估此选项。 再次修改您的pom.xml以替换为 dependencygroupIdch.qos.logback/groupIdartifactIdlogback-classic/artifactIdversion1.0.13/version/dependency 这是开始配置的src/main/resources/logback.xml配置示例。 configurationappender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appenderlogger namedeng levelDEBUG/root levelINFOappender-ref refSTDOUT //root
/configuration使用 如果要提供供大型最终用户使用的Java库则最好将项目设置为仅依赖slf4j-api 然后让用户在其开发或运行时环境中选择任何记录器实现。 作为最终用户他们可以快速选择上述选项之一并充分利用自己喜欢的日志记录实现功能。 资源资源 http://slf4j.org/ http://logging.apache.org/log4j/1.2/ http://docs.oracle.com/javase/7/docs/technotes/guides/logging/ http://logback.qos.ch/ 参考 如何在A Programmers Journal博客上与JCG合作伙伴 Zemian Deng 一起使用不同的记录器实现配置SLF4J 。 翻译自: https://www.javacodegeeks.com/2013/08/how-to-configure-slf4j-with-different-logger-implementations.html