Log4j
Posted TSXin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Log4j相关的知识,希望对你有一定的参考价值。
Log4j日志框架
项目中对于日志的记录
系统中对于记录日志的需求并不单纯。首先,希望日志要能持久化到磁盘,最基本的就是要能够保存到文件中;其次,我们希望在开发和生产环境中记录的日志并不相同,明显开发环境的日志记录会更多方便调试,但放到生产环境下大量的日志很容易会撑爆服务器,因此在生产环境我们希望只记录重要信息。
基于不单纯的目的,System.out.println是直接不能满足我们的要求,因此抛弃它,选择功能更强的日志框架。而log4j是apache下一款著名的开源日志框架,log4j满足上面的一切需求。
记录日志的框架并不仅仅只有log4j,比较有名的还有logback等,现在比较火的SpringBoot默认集成的日志就是logback。不管哪种日志框架,一般都能够实现日志的持久化功能。
日志的重要性
日志非常重要,不做日志出了问题找不到数据的依据,bug出现没办法了解,从日常的包异常查找问题就能看出来,如果没有日志,找bug将非常困难。
记录方式
1,输出文件(数据量庞大)
2,记录到数据库(数据量不大,但是很重要)
mvn:
//产生一个日志输出对象 创建对象就产生,把类挂上去,
用logger输出都是挂在这的类
private static Logger logger= Logger.getLogger(App.class);
日志输出格式
logger.info("日常信息输出");
logger.warn("危险日志");
logger.error("错误日志");
logger.debug("debug日志");
logger.fatal("发出一个错误信息,也是指严重错误,用的并不是很多");
logger.trace("比debug低一级的日志");
log4j级别(level)
不同的级别,能都打印的日志是不同的
注:ALL和OFF是1.2.12加上去的
释:当选择ALL时,所有日志都能输出,倘若选INFO则TRACE与DEBUG不输出,
配置级别:
log4j.rootLogger=INFO
输出方式(日志输出的目的地):
log4j.appender
a:org.apache.log4j.ConsoleAppender:将日志信息输出到控制台。
b:org.apache.log4j.FileAppender:将日志信息输出到一个文件。
c:org.apache.log4j.DailyRollingFileAppender:将日志信息输出到一个日志文件,并且每天输出到一个新的日志文件。
d:org.apache.log4j.RollingFileAppender:将日志信息输出到一个日志文件,并且指定文件的尺寸,当文件大小达到指定尺寸时,会自动把文件改名,同时产生一个新的文件。
e:org.apache.log4j.WriteAppender:将日志信息以流格式发送到任意指定地方。
f:org.apache.log4j.jdbc.JDBCAppender:通过JDBC把日志信息输出到数据库中。
格式化Appender的输出
log4j.appender.c.layout
控制台输出
磁盘输出
在配置文件中可以通过log4j.appender.A1.layout.ConversionPattern设置日志输出格式。
参数:
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”
”,Unix平台为”
”输出日志信息换行
示例:
#自定义格式内容
log4j.appender.f.layout.ConversionPattern=
%d{yyy-MM-dd HH:mm:ss,SSS,E}%n
文件输出为
#输出类型 文件
log4j.appender.h=org.apache.log4j.FileAppender
#输出本地my.html网页
log4j.appender.h.File=my.html
#是否追加
log4j.appender.h.Append=true
#输出格式 网页格式
log4j.appender.h.layout=org.apache.log4j.HTMLLayout
网页效果:
这里只涉及控制台,普通日志文件txt,以及html网页格式日志输出
以上是关于Log4j的主要内容,如果未能解决你的问题,请参考以下文章
log4j怎样控制只输出自己写的代码的日志,不输出框架中的日志
Log4j反序列化远程代码执行漏洞(CVE-2019-17571)
log4jspringboot项目启动 ,使用的druid数据源,log4j报错 log4j:WARN Please initialize the log4j system properly.(代码片