开发一个系统,log日志系统应该是重要的一部分。今天学习了log4j+slf4j的log日志系统配置,集成在eclipse中。下面仔细讲解:
1. 概念介绍:
slf4j: SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
实际上,SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类。从某种程度上,SLF4J有点类似JDBC,不过比JDBC更简单,在JDBC中,你需要指定驱动程序,而在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。【摘自百度百科】可以看出SLF4J为以后跨log日志平台提供了很大的方便。
log4j:Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。【同样摘自百度百科,上面还有详细的配置,仔细看】http://baike.baidu.com.cn/view/25347.htm
2. 关系,SLF4J相当于是个外部封装,而真正的log系统是Log4j,SLF4J作为一个工厂类,可以封装很多的log日志,因此才能集合不同的日志,跨平台。下载到SLF4J的工程也能发现,里面有对各种log系统的支持。
3. 针对java的开发环境,log日志系统的配置方法
1) 下载SLF4J,log4j
http://www.slf4j.org/download.html
http://logging.apache.org/log4j/1.2/download.html
2) 解压并导入eclipse:slf4j-api-1.5.11.jar,slf4j-log4j12-1.5.11.jar,log4j-1.2.15.jar。
导入方法是在工程上点击右键-> build path -> configure build path -> libraries -> add external jars 选择相应的路径,将上述包导入
3) 编辑log4j.properities :
log4j.rootLogger=DEBUG,console,r
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
# file
log4j.appender.r=org.apache.log4j.RollingFileAppender
log4j.appender.r.layout=org.apache.log4j.PatternLayout
log4j.appender.r.layout.ConversionPattern=%p [%t] [%c] %d {%m%n}
log4j.appender.r.File=./logs/log.log
log4j.appender.r.MaxFileSize=100KB
log4j.appender.r.MaxBackupIndex=100
然后将该文件放在对应工程的根目录下
4)编辑代码
在main函数中添加
PropertyConfigurator.configure("log4j.properties");
这样程序在执行的时候就能够加载log4j的配置文件。
5)示例代码
import org.apache.log4j.PropertyConfigurator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Virtual {
public static final Logger log = LoggerFactory.getLogger(Virtual.class);
public static void main(String[] args){
PropertyConfigurator.configure("log4j.properties");
Shape cricle = new Circle();
Shape line = new Line();
cricle.draw();
line.draw();
log.info("hello world");
}
}
来个参考资料,以后会有用的:http://blog.csdn.net/vector03/article/details/6419199