这篇文章东拼西凑,有引用的别人的博客的网址,现在对log4j的理解程度也只不过是知道一些使用方法而已
在学习一些工具的时候,运行所写的代码,有时出错但是日志信息不够,要解决问题日志是很必须的,以前只是把老师的log4j.properties粘上就用了,有报错信息,但是对log4j是一点了解都没有,今天查了查资料,log4j使用非常方便
只要你的类中使用Logger输出日志信息,不同的方法输出的日志有不同的级别,运行你的代码,log4j会向指定的位置输出指定格式的你指定要输出的日志,这对监控程序的运行状态非常有用
class.getName() 返回全路径名
使用方法
新建一个Logger logger=new Logger(String name); //参数一般是所在类的名字 TestLog4j.class.getName()
调用logger方法.info() .debug() .error() .warn() .all() .fatal() .trace()
工程根类路径下配置log4j.properties
配置相应appender
log4j.rootLogger=DEBUG,outputfile //DEBUG级别,日志信息输出到appender,appender的名字为outputfile
log4j.appender.outputfile= //appender 的类别
.outputfile.distination= //appender 的目的地
.outputfile.layout //appender 日志信息的布局类别
.outputfile.layout.conversionPattern //appender 日志信息布局的配置
布局的设置
%m 日志信息本身
%c 产生日志的类,new Logger(String name);中的参数
%M 产生日志的方法
%t 产生日志的线程
%l 产生日志的语句的行号
%p 日志的级别 log4j.rootLogger=DEBUG 中的DEBUG
%d 产生日志的时间
%r 产生日志的时间与程序启动时间的毫秒值差
%n 一个换行符 https://baike.baidu.com/item/log4j/480673?fr=aladdin
日志的级别
ALL(所有的日志) > FATAL(无法修复的错误) > ERROR(可修复,不确定系统可以继续正常运行) > WARN(可修复,系统可以继续正常运 行) > INFO(程序正常运行反馈的信息) > DEBUG(任何被认为有利于调试的信息) > TRACE(程序每推进一步都可以反馈一下)
https://www.cnblogs.com/alice-fee/p/6214654.html
https://blog.csdn.net/wewewfs/article/details/54948427
在log4j.rootLogger配置日志级别,所有的 级别大于配置中的日志级别的 日志信息都会被输出
项目中引用的jar包的日志信息的打印
项目本身不会打印引用的jar包的日志,如果jar包使用log4j作为日志输出工具,要知道jar包的运行情况,在配置了rootLogger,appender的 前提下,配置--log4j.logger.package=级别,相应位置会打印jar包的日志,级别要高于rootLogger的级才有效
例如
log4j.rootLogger=DEBUG,console
log4j.logger.apache.storm.core=WARN // storm包的日志会打印到appender console指定的位置
实例
log4j.rootLogger=DEBUG,outputfile //可以有多个appender,appender在下面配置
log4j.appender.outputfile=org.apache.log4j.FileAppender
log4j.appender.outputfile.file=e:/log.out
log4j.appender.outputfile.layout=org.apache.log4j.PatternLayout
log4j.appender.outputfile.layout.conversionPattern=[%p]%m%n //日志存入文件,格式为--[级别]日志换行
public class TestLog4j {
private static Logger logger=Logger.getLogger(TestLog4j.class.getName());
public static void main(String[] args) {
System.out.println(TestLog4j.class.getName());
logger.debug("Hello,this is an debug message");
logger.info("Hello this is an info message");
logger.error("Hello this is an error message");
}
}
输出结果
[DEBUG]Hello,this is an debug message
[INFO]Hello this is an info message
[ERROR]Hello this is an error message