标签:
上篇博文已经分别介绍了如何搭建SSH开发环境以及对SSH三个框架的整合。整合完成之后,我们基本上就可以正常的开始一个基于SSH框架开发的项目了。本篇博文介绍的资源分类和日志管理都是一些锦上添花的配置。利用这些,来清晰我们的思路,便利我们的编程。
先来说说资源分类吧。这里的资源分类是指对项目中代码或者配置文件等的一个分类管理。以下截图中的分类只是参考,主要是对于资源分类管理思想上的重视。我们要知道,一个结构清晰,骨架简洁的项目是极其方便团队开发,同时也可加快新人或者他人对该项目的理解。
再来说说日志管理,一般稍大型的项目都会加入日志管理。日志模块基本是一个必不可少的部分,它对调试,记录运行,问题定位都起到很重要的作用。我们常见的日志工具有很多:sf4j、commons-logging、log4j、JDK自带logging等。这些日志框架的常用功能和使用方式都是大体相同的。在这里我想要格外说的就是sf4j,它不同于log4j或者logging等日志工具。sf4j是一个管理日志工具的工具。加入它是为了应对项目中日志框架的变化,例如开始使用的log4j,但是后期因为某种原因想要更换为commons-logging,如果使用了sf4j,开发人员只需要调用slf4j即可,然后slf4j根据开发人员加入的不同的jar包,来调用相应的日志工具。
当前项目中我们使用的日志工具就是sf4j和log4j,下图是使用log4j我们需要加入的jar包:
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有FATAL、ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
其中日志信息的优先级别FATAL、ERROR、WARN、INFO、DEBUG分别代表:严重错误、错误、警告、一般信息、调试信息。
关于日志级别的设置,在log4j.properties文件中:
### direct logmessages to stdout ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p %c{1}:%L - %m%n ### direct messagesto file hibernate.log ### #log4j.appender.file=org.apache.log4j.FileAppender #log4j.appender.file.File=hibernate.log #log4j.appender.file.layout=org.apache.log4j.PatternLayout #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE}%5p %c{1}:%L - %m%n ### set log levels -for more verbose logging change 'info' to 'debug' ### log4j.rootLogger=error,stdout #log4j.logger.org.hibernate=info #log4j.logger.org.hibernate=debug log4j.logger.cn.itcast.oa=debug
log4j.rootLogger=error,stdout
通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
log4j.logger.cn.itcast.oa=debug则是单独设置某个项目中的某个包的日志级别。
加入jar包和配置文件,我们就可以使用日志管理我们的项目了。下面就是我对加入日志的一个测试。测试类代码:
package cn.itcast.oa.test; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.junit.Test; public class LogTest { private Log log = LogFactory.getLog(this.getClass()); @Test public void test() { log.debug("这是debug信息"); log.info("这是info信息"); log.warn("这是warn信息"); log.error("这是error信息"); log.fatal("这是fatal信息"); } }
当我们在log4j.properties配置文件中设置不同的日志级别时,控制台打印的信息应该也是不尽相同。先看日志级别为debug:
log4j.rootLogger=debug,stdout
debug是最低级别,应该比它级别高的日志都应该被打印出来。显示结果为:
再对比看一下,设置日志级别为error。比它低的日志级别信息应该是不能被打印出来的。
log4j.rootLogger=error,stdout
显示结果为:
至此,关于资源分类和日志管理,我们有了一个最基础的了解,具体深入的使用还需要继续在项目中摸索学习。
标签:
原文地址:http://blog.csdn.net/sunliduan/article/details/43969011