大家好,我是IT修真院北京分院第22期的学员,一枚正直纯洁善良的JAVA程序员
今天给大家分享一下,修真院官网JAVA任务1,深度思考中的知识点——Log4j
PPT链接:https://ptteng.github.io/PPT/PPT-java/Java_task01_log4j.html#/
视频连接:
Java日志记录之log4j_腾讯视频
1,引言
Java中日志是个很重要但又容易被初学者忽略的知识点,那么今天我们就来看一下几种记录日志的方式,以及应该怎么记录日志。
2,记录日志的几种方式
记录日志的方式有多个,这几种我们也都见到过:
① 最简单的方式:System.out.println("徐小明");
这种方式是我们在学习Java基础时就掌握了的,但为什么我们不建议用这种方式呢?其中一个很重要的原因是这种日志输出方式是在控制台,而我们开发的项目是要上线运行的,任何的问题反馈我们是靠日记记录来查找原因的,就必须要脱离控制台这种模式。
②Java.util.logging.logger
在JDK1.4版本之后,提供了日志的API,可以往文件中写日志了。
public class TestLogJava {
public static void main (String[] args) throws IOException {
Logger log = Logger.getLogger("testlog");
log.setLevel(Level.ALL);
FileHandler fileHandler =new FileHandler("testlog.log");
fileHandler.setLevel(Level.ALL);
fileHandler.setFormatter(new LogFormatter());
log.addHandler(fileHandler);
log.info("This is test java util log");
}
}
这是在网上找到的一个例子,可以看到首先是定义了一个Logger的实例,并设置了log的级别,接着添加了一个fileHander就是把日志写入文件中。在写入文件的时候,定义一个LogFormatter队日志进行格式的渲染。
③Log4j
log4j是Apache提供的记录日志的jar包。
在使用时,首先要导入log4j的jar包,然后要配置log4j.properties。
配置实例:
log4j.rootLogger=DEBUG,Console,Stdout
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.appender.Console.File=D:\\Tomcat 5.5\\logs\\qc.log
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
log4j.appender.Stdout = org.apache.log4j.DailyRollingFileAppender
log4j.appender.Stdout.Append = true
log4j.appender.Stdout.Threshold = DEBUG
log4j.appender.Stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.Stdout.layout.ConversionPattern =%-d{yyyy-MM-dd HH/:mm/:ss} [ %t/:%r ] - [ %p ] %m%n
log4j日志一共有五种级别:DEBUG、INFO、WARN、ERROR、FATAL。
--log4j.rootLogger=DEBUG,Console,Stdout
这里指定了日志级别为debug,并将等级为debug的日志信息输出到Console和Stdout两个目的地。Console和Stdout名字可以随意起,只要在后面定义了就行。
--log4j.appender.Console=org.apache.log4j.ConsoleAppender
此句为定义名为Console的输出端是哪种类型,可以是:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
--log4j.appender.Console.layout=org.apache.log4j.PatternLayout
此句为定义名为Console的输出端的layout是哪种类型,可以是
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
--log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:
%m 输出代码中指定的消息
%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
%r 输出自应用启动到输出该log信息耗费的毫秒数
%c 输出所属的类目,通常就是所在类的全名
%t 输出产生该日志事件的线程名
%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。
[QC]是log信息的开头,可以为任意字符,一般为项目简称。
--log4j.appender.Console.File=D:\\Tomcat 5.5\\logs\\qc.log
此句为定义名为Console的输出端的文件名为D:\\Tomcat 5.5\\logs\\qc.log可以自行修改。
④Commons-logging
Commons-logging也是Apache提供的日志jar包。
Commons-logging提供的是一个日志(Log)接口(Interface),是为那些需要建立在不同环境下使用不同日志架构的组件或库的开发者创建的其中包括Apache Log4j以及Java log的日志架构。把日志信息抽象成commons-logging的Log接口,并由commons-logging在运行时决定使用哪种日志架构。因为Log4j的强大功能,commons-logging一般会和Log4j一起使用,这几乎成为了Java日志的标准工具。
3,log4j与slf4j的结合
slf4j:Simple logging facade for Java。
slf4j不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。
使用步骤:
1,在JavaWeb项目中使用SLF4J和LOG4J,需要在项目中添加下面三个jar包:log4j.jar slf4j-api.jar slf4j-log4j.jar。
2,配置log4j.properties
3,在web.xml中添加log4j的配置
4,在需要输出日志的类中添加slf4j的logger实例对象:
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
------------------------------------------------------------------------------------------------------------------------
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
我的邀请码:10014595,或者你可以直接点击此链接:http://www.jnshu.com/login/1/10014595
网友评论