Jul 10, 2017 10:38:44 AM

    作者:wendal

    一个老生常谈的问题

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

    解答

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

      • nutz.jar + log4j-1.2.17.jar
    • 记得添加log4j.properties到resources目录(maven) 或 src目录(eclipse普通项目)
    • 使用 Logback
      • nutz.jar + log4j-over-slf4j.jar + logback-classic.jar

    请检查依赖关系中是否存在log4j 1.2.x的jar,如果存在,需要删除掉

    本页面的文字允许在和GNU自由文档许可证下修改和再使用。