SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
2014-10-22 16:57
295 查看
SLF4J(Simple Logging Facade for Java) 是一个通用的日志框架,不能何以谓之 Facade(门面),所扮眼的角色相当于 Jakarta Commons Logging。就像 JCL 需要底层的日志实现,如 Log4J、java.util.logging、Simple Logger 等来完成具体的信息输出,事实上基本总是 JCL+Log4J 那么一个绝配。SLF4J
的原旨也是能支持多种下层日志框架实现,但最好的日志实现仍然是 Log4J,所以本篇讲述 SLF4J 的第一种用法 SLF4J+Log4J。
需要的配置文件和组件包,下面三个
jar 文件和一个 properties 文件都是要放在项目的 ClassPath 上。
1. slf4j-api-1.5.11.jar
2. slf4j-log4j12-1.5.11.jar
3. log4j-1.2.15.jar
4. log4j.properties(也可以是 log4j.xml,本例中用 log4j.propertes)
log4j.properties
[java]
view plaincopyprint?
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
log4j.appender.db=org.apache.log4j.FileAppender
log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log
log4j.appender.db.Append=true
log4j.appender.db.layout=org.apache.log4j.PatternLayout
log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
执行它,控制台输出:
[java]
view plaincopyprint?
2010-04-07 17:14:51,390 [com.unmi.TestSlf4j]-[INFO] Hello SLF4J
在 log4j.xml 能做的配置,logback.xml 中也能做到,而且还增强了诸如 <if><then><else>、<filter>、<sift> 等更强的控制,请参考
logback 的手册 http://logback.qos.ch/manual/index.html。
使用 Logback 的代码
[xhtml]
view plaincopyprint?
package com.unmi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLogback {
private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
public static void main(String[] args) {
logger.info("Hello {}","TestLogback");
}
}
package com.unmi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLogback {
private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
public static void main(String[] args) {
logger.info("Hello {}","TestLogback");
}
}
可以看到与使用 SLF4J 的代码没有任何区别,因为本来用的通用日志框架就是 SLF4J,说到底,这里的 Logback 就相当于 SLF4J+Log4J 使用方式中的
Log4J 绑定和 Log4J 的功能。
执行上面的代码,输出:
21:38:43.031 [main] INFO com.unmi.TestLogback - Hello TestLogback
的原旨也是能支持多种下层日志框架实现,但最好的日志实现仍然是 Log4J,所以本篇讲述 SLF4J 的第一种用法 SLF4J+Log4J。
需要的配置文件和组件包,下面三个
jar 文件和一个 properties 文件都是要放在项目的 ClassPath 上。
1. slf4j-api-1.5.11.jar
2. slf4j-log4j12-1.5.11.jar
3. log4j-1.2.15.jar
4. log4j.properties(也可以是 log4j.xml,本例中用 log4j.propertes)
log4j.properties
[java]
view plaincopyprint?
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
log4j.appender.db=org.apache.log4j.FileAppender
log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log
log4j.appender.db.Append=true
log4j.appender.db.layout=org.apache.log4j.PatternLayout
log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
[java] view plaincopyprint? import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestSlf4J { private static final Logger logger = LoggerFactory.getLogger(TestSlf4j.class); public static void main(String[] args) { logger.info("Hello {}","SLF4J"); } } import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TestSlf4J { private static final Logger logger = LoggerFactory.getLogger(TestSlf4j.class); public static void main(String[] args) { logger.info("Hello {}","SLF4J"); } }
执行它,控制台输出:
[java]
view plaincopyprint?
2010-04-07 17:14:51,390 [com.unmi.TestSlf4j]-[INFO] Hello SLF4J
[xhtml] view plaincopyprint? <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="stdout" /> </root> </configuration> <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder charset="GBK"> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="stdout" /> </root> </configuration>
在 log4j.xml 能做的配置,logback.xml 中也能做到,而且还增强了诸如 <if><then><else>、<filter>、<sift> 等更强的控制,请参考
logback 的手册 http://logback.qos.ch/manual/index.html。
使用 Logback 的代码
[xhtml]
view plaincopyprint?
package com.unmi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLogback {
private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
public static void main(String[] args) {
logger.info("Hello {}","TestLogback");
}
}
package com.unmi;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLogback {
private static final Logger logger = LoggerFactory.getLogger(TestLogback.class);
public static void main(String[] args) {
logger.info("Hello {}","TestLogback");
}
}
可以看到与使用 SLF4J 的代码没有任何区别,因为本来用的通用日志框架就是 SLF4J,说到底,这里的 Logback 就相当于 SLF4J+Log4J 使用方式中的
Log4J 绑定和 Log4J 的功能。
执行上面的代码,输出:
21:38:43.031 [main] INFO com.unmi.TestLogback - Hello TestLogback
相关文章推荐
- SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式 SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式--:SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J(转载)
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- SLF4J 的几种实际应用模式--之二:SLF4J+Logback
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- SLF4J 的几种实际应用模式--之二:SLF4J+Log4J 与 SLF4J+LogBack
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J
- SLF4J 的几种实际应用模式--之一:SLF4J+Log4J(转载)
- SLF4J 的几种实际应用模式--之三:JCL-Over-SLF4J+SLF4J
- 转】SLF4J 的几种实际应用模式--之三:JCL-Over-SLF4J+SLF4J
- 【转】SLF4J 的几种实际应用模式--之三:JCL-Over-SLF4J+SLF4J
- SLF4J 的几种实际应用模式--之二:SLF4J+Logback