w1100n
This site is best viewed in Google Chrome
wiloon, 5/27/2014 0:38 | Tag:, ,

  [java] private static Logger logger = LoggerFactory.getLogger(FooController.class); [/java]   gradle dependencies: compile(“org.apache.logging.log4j:log4j-api:$log4j_version”, “org.apache.logging.log4j:log4j-core:$log4j_version”, “org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version”, “org.slf4j:slf4j-api:$slf4j_version” ) 每一个Java程序员都知道日志对于任何一个Java应用程序,尤其是服务端程序是至关重要的,而很多程序员也已经熟悉各种不同的日志库如java.util.logging、Apache log4j、logback。但如果你还不知道SLF4J(Simple logging facade for Java)的话,那么是时候去在你项目中学习使用SLF4J了。 在这篇文章中,我们将学习为什么使用SLF4J比log4j或者java.util.logging要优秀。自从上次我写Java程序员的10个日志技巧已经有一段时间了,我已经不记得我写的关于日志的一切了。 不管怎样,让我们回到这个话题,SLF4J不同于其他日志类库,与其它有很大的不同。SLF4J(Simple logging Facade for Java)不是一个真正的日志实现,而是一个抽象层( abstraction layer),它允许你在后台使用任意一个日志类库。如果是在编写供内外部都可以使用的API或者通用类库,那么你真不会希望使用你类库的客户端必须使用你选择的日志类库。 如果一个项目已经使用了log4j,而你加载了一个类库,比方说 Apache Active MQ——它依赖于于另外一个日志类库logback,那么你就需要把它也加载进去。但如果Apache Active MQ使用了SLF4J,你可以继续使用你的日志类库而无语忍受加载和维护一个新的日志框架的痛苦。 总的来说,SLF4J使你的代码独立于任意一个特定的日志API,这是一个对于开发API的开发者很好的思想。虽然抽象日志类库的思想已经不是新鲜的事物而且Apache commons logging也已经在使用这种思想了,但现在SLF4J正迅速成为Java世界的日志标准。让我们再看看几个使用SLF4J而不是log4j、logback或者java.util.logging的理由。 … Continue reading

wiloon, 12/27/2013 3:29 | Tag:

log4j2里面日志有8个等级,由低到高是:all<trace<debug<info<warn<error<fatal<off 看下面的配置,这个配置会输出error及以上的日志级别,也就是onMatch匹配的是 大于等于 该等级的日志,输出的就是error,fatal <ThresholdFilter level=”error” onMatch=”ACCEPT” onMismatch=”DENY” /> 然后是一个相反的配置,这个配置会输出error以下的日志级别,也就是onMismatch匹配的是 小于 该等级的日志,输出的就是warn,info,debug,trace <ThresholdFilter level=”error” onMatch=”DENY” onMismatch=”ACCEPT” /> <loggers> <AsyncLogger name=”net.shgaoxin.log4j2test” level=”info” additivity=”false” includeLocation=”true”> <AppenderRef ref=”rollingfile_common-msg” /> <AppenderRef ref=”rollingfile_error-msg” /> </AsyncLogger> </loggers> loggers标签,用于定义logger的lever和所采用的appender,其中appender-ref必须为先前定义的 appenders的名称,例如,此处为Console。那么log就会以appender所定义的输出格式来输出log。 root标签为log的默认输出形式,如果一个类的log没有在loggers中明确指定其输出lever与格式,那么就会采用root中定义的格式。 private static Logger logger = LogManager.getLogger(Foo.class.getName()); … Continue reading

辽ICP备14012896