Log4j的简单使用
-
新建maven项目,引入依赖库
<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
-
在src/main/resources文件夹中新建log4j.properties文件(properties文件一定要在resources文件夹下,否则会报错)
log4j.rootLogger=DEBUG, Console ,File #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 #File log4j.appender.File = org.apache.log4j.FileAppender log4j.appender.File.File = E://log.log log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
-
新建TestLog类
package com.log; import org.apache.log4j.Logger; public class TestLog { private static Logger logger = Logger.getLogger(TestLog.class); public static void main(String[] args) { logger.info("普通日志信息"); logger.debug("调试debug信息"); logger.error("报错error信息"); logger.warn("警告warn信息"); logger.fatal("发生了严重错误"); } }
-
在IDEA中安装Grep Console插件,并配置不同类型日志的颜色
-
执行程序,控制台打印效果如下:
Log4J的详细配置
-
log4j根配置
# 把INFO级别或INFO以上级别的日志输出到控制台和文件中 log4j.rootLogger=INFO, Console ,File
把指定级别的日志信息输出到一个或多个位置
-
log4j日志等级
log4j根据日志的重要程度,分OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL几个级别,但是通常在实际开发中只建议使用4个级别,从高到低分别为ERROR、WARN、INFO、DEBUG,加入在rootLogger中配置的级别为INFO,那么将会输出ERROR、WARN、INFO类型的信息,DEBUG信息不会被输出。
-
log4j appender输出类型
NO 类型 说明 1 org.apache.log4j.ConsoleAppender 控制台 2 org.apache.log4j.FileAppender 文件中追加输出 3 org.apache.log4.DailyRollingFileAppender 每天产生一个日志文件 4 org.apache.log4.RollingFileAppender 文件大小达到指定尺寸时产生新文件 5 org.apache.log4.WriteAppender 将日志信息以流格式发送到任意指定位置 假如日志数据量不是很大的话推荐使用DailyRollingFileAppender,每天产生一个新的日志,方便查看。
假如日志数据量很大,一般使用RollingFileAppender固定日志的尺寸,假如超过了日志固定尺寸就产生一个新文件。
log4j.rootLogger=DEBUG,Console,File,DailyRollingFile #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 #File log4j.appender.File = org.apache.log4j.FileAppender log4j.appender.File.File = E://log.log log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n #DailyRollingFile log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender log4j.appender.DailyRollingFile.File = E://log2.log log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n #RollingFile log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender log4j.appender.RollingFile.File = E://log3.log log4j.appender.RollingFile.MaxFileSize=1KB log4j.appender.RollingFile.MaxBackupIndex=3 log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
MaxFileSize表示日志文件的最大尺寸,MaxBackupIndex表示日志文件的个数,假如超过了则覆盖。
-
log4 layout日志信息格式
Log4j提供的layout有以下几种
No 格式 说明 1 org.apache.log4j.HTMLLayout 以HTMl表格形成布局 2 org.apache.log4j.PatternLayout 可以灵活的指定布局模式 3 org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串 4 org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息 PatternLayout是最常用的一种输出格式,其有一个ConversionPattern属性,可以灵活的配置输出信息的格式。
%m:输出代码中指定的消息
%M:输出打印该条日志的方法名
%p:输出优先级,即(DEBUG、INFO、ERROR、WARN、FATAL)
%r:输出自应用启动到输出该log所耗费的毫秒数
%c:输出所属的类目,通常就是所在的类全名
%t:输出产生该日志事件的线程名
%n:输出一个回车换行符
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss.SSS},输出类似2020-10-12 22:10:25.452。
%l:输出日志事件的发生位置及在代码中的行数
-
log4 Threshold属性指定输出等级
有时候我们需要把一些报错ERROR日志单独存到指定文件 ,这时候,Threshold属性就派上用场了;
Threshold属性可以指定日志level ,Log4j根据日志信息的重要程度,分OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。比如我们指定某个appender的Threshold为WARN,那这个appender输出的日志信息就是WARN级别以及WARN以上的级别; 假如我们指定的是ERROR,那这个就输出ERROR或者FATAL日志信息;
log4j.rootLogger=DEBUG,Console,EFILE #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 #ERRORFile log4j.appender.EFILE = org.apache.log4j.FileAppender log4j.appender.EFILE.File = E://ERROR.log log4j.appender.EFILE.layout = org.apache.log4j.PatternLayout log4j.appender.EFILE.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n log4j.appender.EFILE.Threshold = ERROR
此时的错误信息就会单独存在E://ERROR.log
-
log4 Append属性指定是否追加内容
Log4j默认是不断的把日志内容追加到日志文件,这里就有个属性 Append 默认就是true,假如将其设置成false 就不追加了直接覆盖前面的内容;
log4j.rootLogger=DEBUG,Console,File #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 #File log4j.appender.File = org.apache.log4j.FileAppender log4j.appender.File.File = E://log.log log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n log4j.appender.File.Append=false
此时发现每次执行程序,文件里的log都会刷新。