JAVA中的Log4j
Log4j的简介:
1.如果程序中出现异常我们怎么解决
01 使用异常处理机制==>异常 02 使用debug调试(必须掌握) 03 System.out.Print();
001.控制台行数有限制
002.影响性能
003 如果我们需要对用户的行为和习惯进行分析!不能解决这个问题
我们需要一个能把记录用户行为和习惯的代码记录到一个文件中
Log4j:(Log for Java)
01.是使用java语言编写的一个日志框架
02.是Apache的一个开源项目
03.记录我们程序中的日志信息
04.将日志信息输出到我们指定的目的地
.log结尾的(日志文件);
Log4j的作用:
01.记录代码中变量的变化,用于我们的程序调试和后期维护.
02.可以周期性的保存一些数据,用于后期对数据的分析
03.通过设置日志信息的级别,来便于我们管理
Log4j的组成部分:(日志的记录器(Logger),日志的输出格式(Layout),3.日志的输出目的地(Appender))
1.日志的记录器(Logger)
日志的输出级别
OFF 级别最高,用于关闭所有的日志输出
ALL 级别最低,用于开启所有的日志输出
----------------------------------------------------------------------------------
Fatal 严重的错误事件,将导致我们的程序终止
Error 错误事件,不会影响我们程序的继续执行
Warn 存在潜在的错误场景
Info 指的是粗粒度级别上的使用
Debug 指的是细粒度级别上的使用
Trace 比Debug还要细的
开发环境(开发阶段) : 使用的日志级别比较低 Debug
生产环境 (项目上线) : 建立把Debug细粒度的设置成Warn
2.日志的输出格式(Layout)
%p 日志信息的优先级
%d 日志信息的输出时间 %d{yyyy-MM-dd hh:mm:ss}
%C 日志信息的输出类
%l 日志信息的输出位置:类+线程+行号
%M 日志信息的输出 所在方法
%m 日志信息的输出的内容
%n 输入日志信息之后 换行
-----------------------------------------------下面两种不常用------------------------------
%t 日志信息的输出 所在线程
%r 从程序启动到输出日志信息所经历的时间(毫秒)
3.日志的输出目的地(Appender)
01.把我们的日志信息输出到某个地址
02.可以同指定多个输出地
03.一个输出地就对应一个Appender
将日志输出到Console控制台中====》ConsoleAppender
将日志输出到文件中
====》01.RollingFileAppender 根据文件的大小创建新的日志文件
====》02.DailyRollingFileAppender 根据时间创建新的日志文件
下面第一个例子创建一个Log4j的项目
1 package baselog4j; 2 3 import org.apache.log4j.Logger; 4 5 /** 6 * @2018-04-19 7 * @王鸿 8 * @Administrator 9 */ 10 public class BaseLog4j { 11 12 public static void main(String[] args) { 13 // 日志收集器 14 Logger logger = Logger.getLogger(BaseLog4j.class); 15 logger.fatal("fatal message"); 16 logger.error("error message"); 17 logger.warn("warn message"); 18 logger.info("info message"); 19 logger.debug("debug message"); 20 logger.trace("trace message"); 21 } 22 } 23 下面是一个配置文件里面的 "log4j.properties" 24
1 # 01.把我们的日志信息 输出到Console控制台上 2 # ConsoleAppender console=new ConsoleAppender(); 3 #log4j.appender.console规范写法 console就是一个对象名称 可以自定义 4 log4j.appender.console=org.apache.log4j.ConsoleAppender 5 #对象名.属性 target输出地 6 log4j.appender.console.Target=System.err 7 # 创建输出格式所需要的对象 Layout 8 log4j.appender.console.Layout=org.apache.log4j.PatternLayout 9 # 设置输出格式 10 log4j.appender.console.Layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %l %m %n 11 #通过log4j.rootLogger 来指定我们的日志输出级别和输出目的地 12 # 级别必须位于第一个位置,只能有一个 13 log4j.rootLogger=debug,console
下面是输出结果
下面的是同时在控制台中和电脑的E盘同时创建(main的代码不变)
# 01.把我们的日志信息 输出到Console控制台上 # ConsoleAppender console=new ConsoleAppender(); #log4j.appender.console规范写法 console就是一个对象名称 可以自定义 log4j.appender.console=org.apache.log4j.ConsoleAppender #对象名.属性 target输出地 log4j.appender.console.Target=System.err # 创建输出格式所需要的对象 Layout log4j.appender.console.Layout=org.apache.log4j.PatternLayout # 设置输出格式 log4j.appender.console.Layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %l %m %n #02.输出到文件中 根据文件大小自动创建 log4j.appender.file=org.apache.log4j.RollingFileAppender #指定文件输出位置 log4j.appender.file.File=e\:/log/log4j.log #设置文件最大容量 log4j.appender.file.MaxFileSize=1kb #如果超过了文件大小创建几个新文件 log4j.appender.file.MaxBackupIndex=3 #如果文件都满了 设置是否覆盖之前的文件 log4j.appender.file.Append=true # 创建输出格式所需要的对象 Layout log4j.appender.file.Layout=org.apache.log4j.PatternLayout # 设置输出格式 log4j.appender.file.Layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %l %m %n #通过log4j.rootLogger 来指定我们的日志输出级别和输出目的地 # 级别必须位于第一个位置,只能有一个 log4j.rootLogger=debug,console,file
这样会在E盘下log文件夹下创建一个以log4j.log的日志文件
下面创建一个每分钟创建的"log4j.properties"
# 01.把我们的日志信息 输出到Console控制台上 # ConsoleAppender console=new ConsoleAppender(); #log4j.appender.console规范写法 console就是一个对象名称 可以自定义 log4j.appender.console=org.apache.log4j.ConsoleAppender #对象名.属性 target输出地 log4j.appender.console.Target=System.err # 创建输出格式所需要的对象 Layout log4j.appender.console.Layout=org.apache.log4j.PatternLayout # 设置输出格式 log4j.appender.console.Layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %l %m %n #02.输出到文件中 根据文件大小自动创建 log4j.appender.file=org.apache.log4j.RollingFileAppender #指定文件输出位置 log4j.appender.file.File=e\:/log/log4j.log #设置文件最大容量 log4j.appender.file.MaxFileSize=1kb #如果超过了文件大小创建几个新文件 log4j.appender.file.MaxBackupIndex=3 #如果文件都满了 设置是否覆盖之前的文件 log4j.appender.file.Append=true # 创建输出格式所需要的对象 Layout log4j.appender.file.Layout=org.apache.log4j.PatternLayout # 设置输出格式 log4j.appender.file.Layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %l %m %n #03.每分钟生成一个新文件 log4j.appender.file2=org.apache.log4j.DailyRollingFileAppender log4j.appender.file2.Append=true #DatePattern共分为6种方式 log4j.appender.file2.DatePattern=yyyy-MM-dd-hh-mm'.log' log4j.appender.file2.File=e\:/log/log4j.log # 创建输出格式所需要的对象 Layout log4j.appender.file2.Layout=org.apache.log4j.PatternLayout # 设置输出格式 log4j.appender.file2.Layout.ConversionPattern=%d{yyyy-MM-dd hh:mm:ss} %l %m %n #通过log4j.rootLogger 来指定我们的日志输出级别和输出目的地 # 级别必须位于第一个位置,只能有一个 log4j.rootLogger=trace,console,file2 #指定包中的日志输出 #log4j.logger.com.ddf=trace,console,file2
DailyRollingFileAppender中的 DatePattern共分为6种方式
1.每月 yyyy-MM
2.每周 yyyy-ww
3.每天 yyyy-MM-dd
4.每半天 yyyy-MM-dd-a
5.每小时 yyyy-MM-dd-hh
6.每分钟 yyyy-MM-dd-hh-mm