codecamp

Log配置

一个老生常谈的问题

  1. Nutz需要第三方jar包才能运行吗? 答案是,不需要.但如果有的话更好.
  2. 一般有几种疑问:
    1. 刚刚接触Nutz,直接把nutz.jar扔进工程,发现正常运行起来了
    2. 读源码,发现源码其实是依赖Log4j的几个类的,但为什么没有log4j的jar,Nutz也正常运行了呢?
    3. 想把日志输出到log4j,加上log4j的jar,发现nutz的日志就按log4j的设置输出了
    4. 不想使用log4j,想使用更高效的Logback或者传统的JDK Logging,不知道行不行?

解答

  1. Nutz的源码中,依赖两个外部jar -- servlet-api.jar 和 log4j.jar
    1. 前者在任何标准J2EE Web应用中都有, Nutz仅支持Servlet 2.4或以上.
    2. 后者是极其常见的Log4j, 编译器依赖于1.2.17版,但在运行时仅要求是1.2.x.
  2. 我们使用Nutz.Plugin,通过检测是否存在Log4j的核心接口 org.apache.log4j.Log是否存在来判断是否将日志输出到Log4j
    1. 由于仅检测是否存在org.apache.log4j.Log接口,这样就导致两个情况:
      1. 仅仅把Log4j的jar放进classpath,而没有配置之,那么输出日志时,log4j会警告你. 我们认为这是你的失误.
      2. 这样也提供了一个自由度,因为slf4j的log4j-over-slf4j桥也提供这个接口.

        换句话说,如果你把log4j-over-slf4j.jar放进classpath,那么Nutz的日志也能通过Slf4j输出去.

搭配组合

  1. 最精简搭配,适合尝试阶段的新手,默认输出的就是Debug信息,完全无鸭梨!!
    • nutz.jar
  2. 推荐搭配,搭配最新的log4j
    • nutz.jar + log4j-1.2.17.jar
  3. 性能至上,使用Logback
    • nutz.jar + log4j-over-slf4j.jar + slf4j-api.jar + logback-core.jar + logback-classic.jar
  4. 传统选择,使用JDK Loggging
    • nutz.jar + log4j-over-slf4j.jar + slf4j-api.jar + slfj4-jdk.jar
  5. 另类之选,使用Apache Common Logging
    • nutz.jar + log4j-over-slf4j.jar + slf4j-api.jar + slfj4-jcl.jar
技术支持
版本升级
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

表达式引擎

maplist结构

图像处理小军刀

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }