关键接口:
Logger
1对应n个Appender
Appender主要分为
ConsoleAppender
FileAppender
RollingFileAppender DailyRollingFileAppender-每天一个
WriterAppender
Appender 1对1 个Layout
Layout主要有:
PatternLayout 这个才可以有ConversionPattern的option
Ttcc。。
Html.
SimpleLayout..
Logger又分
根Logger
针对包的Logger
logger的预判断只有
isDebugEnabled
isTraceEnabled
isInfoEnabled
为什么!?却没有isErrorEnabled,可能是因为error就都是要抛出来的,所以就没有了吧
但是,类似用法是:
if (logger.isDebugEnabled()) {
logger.debug("New SecurityContext instance will be associated with
SecurityContextHolder");
}
在每个需要的地方,都写上logger.isXXXEnabled,不懂为什么不把这个写进源码里面呢?
一般来说,大都数的java开源框架都采用了commings-logging的api,
从源码的
protected static final Log logger = LogFactory.getLog(HttpSessionContextIntegrationFilter.class);
( Log、LogFactory都是 org.apache.commons.logging包下的类。)
就可以看出。
而spi呢多数是log4j
http://www.iteye.com/topic/378077
Logger
1对应n个Appender
Appender主要分为
ConsoleAppender
FileAppender
RollingFileAppender DailyRollingFileAppender-每天一个
WriterAppender
Appender 1对1 个Layout
Layout主要有:
PatternLayout 这个才可以有ConversionPattern的option
Ttcc。。
Html.
SimpleLayout..
Logger又分
根Logger
针对包的Logger
logger的预判断只有
isDebugEnabled
isTraceEnabled
isInfoEnabled
为什么!?却没有isErrorEnabled,可能是因为error就都是要抛出来的,所以就没有了吧
但是,类似用法是:
if (logger.isDebugEnabled()) {
logger.debug("New SecurityContext instance will be associated with
SecurityContextHolder");
}
在每个需要的地方,都写上logger.isXXXEnabled,不懂为什么不把这个写进源码里面呢?
一般来说,大都数的java开源框架都采用了commings-logging的api,
从源码的
protected static final Log logger = LogFactory.getLog(HttpSessionContextIntegrationFilter.class);
( Log、LogFactory都是 org.apache.commons.logging包下的类。)
就可以看出。
而spi呢多数是log4j
http://www.iteye.com/topic/378077