日志系统2

目前流行的日志门面接口有common-logging、slf4j,以前一直都在使用前者,后来许多文章都在介绍slf4j,很多地方都在介绍slf4j的优点(最主要的比common-logging优越的地方是能在OSGi环境下使用,但是至于为什么common-logging不能使用还是不太清楚),因此决定开始尝试slf4j,对于jar包引入方面,感觉稍微没有common-logging方便,common-logging会自动从众多日志实现的jar包中自动选择,而slf4j需要放入“合适”的jar包才能使用,当然这根它的实现机制有关系,slf4j的实现机制要求她必须这么做。

 

对于日志门面接口的介绍网上有很多文章介绍,不多说废话了,直接记录点实惠的东西,供查用。

 

slf4j这是门面接口,没有实现,如同common-logging一样,需要搭配具体的实现才能使用;

貌似logback是slf4j的亲密搭配,从引入jar包的名称也能看出来;

 

下面介绍两种搭配方式:

 

1. slf4j+logback

 

引入包:slf4j-api.jar、logback-classiclogback-core.jar (注意这三个版本必须一致)

 

logback最简单的配置示例(不是必须的)logback.xml:

<configuration debug="true">
	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <!-- encoders are assigned by default the type ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
		<encoder>
			<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
			</pattern>
		</encoder>
	</appender>
	<root level="debug">
		<appender-ref ref="STDOUT" />
	</root>
	<!-- 下面配置一些具体包的日志过滤级别 -->
	<logger name="org.apache.activemq" level="WARN"/>
</configuration>

 

2.slf4j+log4j

 

引入包:slf4j-api.jar、slf4j-log4j.jar、log4j.jar(注意三个版本必须一致)

 

log4j配置示例,log4j.properties:

#设置级别和目的地
log4j.rootLogger=debug,appender1

#输出到控制台
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
#设置输出样式
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
#自定义样式
# %r 时间 0
# %t 方法名 main
# %p 优先级 DEBUG/INFO/ERROR
# %c 所属类的全名(包括包名)
# %l 发生的位置,在某个类的某行
# %m 输出代码中指定的讯息,如log(message)中的message
# %n 输出一个换行符号
log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%C-%M] %m%n

#输出到文件(这里默认为追加方式)
log4j.appender.appender2=org.apache.log4j.FileAppender
#设置文件输出路径
#【1】文本文件
log4j.appender.appender2.File=c:/log1.log
#设置文件输出样式
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss:SSS}][%C-%M] -%m%n
 

无论哪种搭配方式,程序中使用的方法如下:

 

程序中先定义logger

private static Logger logger = LoggerFactory.getLogger(YourClass.class);//slf4j logging
 

程序中日志输出方法:

logger.debug("hello");
logger.info("hello{}",p);//p是变量
 

 

 

 

你可能感兴趣的:(日志系统2)