codecamp

日志

为什么要自己写一个 Log?

首先,我们没有从头实现一个日志,我们不过是 适配 日志。我们适配了 log4j 。但是为什么呢? 为什么不直接依赖 slf4j 呢?

我必须要在这里重申一下 Nutz 框架的目标

  • 尽量让程序员在 设立开发环境 以及 部署应用 的时候获得最佳的体验

如果你下载了 Nutz 的 jar,满心欢喜的加到你的项目里,然后,运行你的项目,你会发现从 Nutz.jar 里会迅速抛出 一个异常。经过一番查阅,你发现你不得不访问 slf4j 的网站,下载它的 jar 包,然后再加入自己的项目里...

你会因此而很高兴吗?

........

不不,起码我不会高兴。 :(

如果这个功能特别复杂,以至于我们没有能力做到很好,我们肯定会毫不犹豫的依赖其他的 jar 包的。比如 1.a.23 之前,我们依赖了 javassist, 1.a.24 我们包括了 ASM


.

..

...

....

.....

......

好吧,我承认,我上面说的统统是狡辩,根本原因不过是因为手痒痒。而且我揭发:实际上这个模块代码都是 wendal 和 Sunonfire 写的,我其实不过是出来打酱油的 ...

如何使用日志

Nutz Log的基本用法和常见的log4j等工具没什么不同。比如:

public class MyClass {
    private static final Log log = Logs.getLog(MyClass.class);

    public void myFuncion() {
        if (log.isDebugEnabled())
            log.debug("I am debug message");
    }
}

Nutz.Log 使用了插件技术,其中优先级依次为:

  1. Log4j --> 通过log4j-over-slf4j桥,你可以将其拓展到其他log框架,如logback
  2. System.out | System.err

它们可以使用的条件是:

  • Log4j
    1. 如果能够加载类 org.apache.log4j.Logger,则认为可用;
  • System.out | System.err
    1. 默认永远可用

让 Nutz 输出日志

以 log4j 为例 (因为我就对这个熟),你需要:

  • 在你的项目里部署一个 Log4j 1.2.17的 jar 包,推荐
  • 在项目的 CLASSPATH 根目录部署 log4j.properties
    log4j.rootLogger=DEBUG, A1
     
    log4j.appender.A1=org.apache.log4j.ConsoleAppender
    log4j.appender.A1.layout=org.apache.log4j.PatternLayout
    log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

什么都不配置呢? Nutz在你没有配置任何Log时,一样工作得很好. 下面是默认行为:

  • 输出到System.err/out
  • 默认日志等级为 DEBUG
部署时决定-插件机制
微信集成 快速入门
温馨提示
下载编程狮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; }