web项目log4j日志配置和使用
Posted IT海贼船
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了web项目log4j日志配置和使用相关的知识,希望对你有一定的参考价值。
在web.xml中配置Log4j的监听和文件映射与相关设置
web.xml代码
<!-- 配置log4j配置文件路径 -->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<!-- 60s 检测日志配置 文件变化 -->
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>60000</param-value>
</context-param>
<!-- 配置Log4j监听器 -->
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
输出源的优先级以及命名,DEBUG < INFO < WARN < ERROR < FATAL
log4j.rootLogger=INFO,console,FILE,infofile
输出到控制台
log4j.appender.console=org.apache.log4j.ConsoleAppender
日志输出的最低层次
log4j.appender.console.threshold=INFO
默认表示所有的消息立即输出
log4j.appender.console.ImmediateFlush = true
布局
log4j.appender.console.layout=org.apache.log4j.PatternLayout
布局格式
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
输出到文件,文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
日志输出的最低层次,声明为error,则进来的info中的信息中在error之前的info和warn不会输出
log4j.appender.FILE.Threshold=INFO
是否追加到文件末尾
log4j.appender.FILE.Append=true
文件路径,指定路径会自动创建文件
log4j.appender.FILE.File=D://TotalDocument//logger//info.log
布局声明
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
布局格式
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c -%F(%L) -%m%n
文件尺寸
log4j.appender.FILE.MaxFileSize=1KB
制定滚动文件的最大个数,放不下的文件会放到滚动文件里面并且会覆盖以前的信息
log4j.appender.FILE.MaxBackupIndex=2
定时产生滚动文件
log4j.appender.infofile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.infofile.Threshold = INFO
log4j.appender.infofile.File = D://TotalDocument//logger//error.log
log4j.appender.infofile.Append = true
log4j.appender.infofile.ImmediateFlush = true
这里可以设置,是每个月每年还是每分钟产生滚动文件
log4j.appender.infofile.DatePattern = '_'yyyyMMdd'.log '
log4j.appender.infofile.layout = org.apache.log4j.PatternLayout
log4j.appender.infofile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %l %m%n
具体的格式化信息
-X号: X信息输出时左对齐;
%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平台为"/r/n",Unix平台为"/n"输出日志信息换行
log4j.appender.CONSOLE.Encoding=UTF-8是Log代码的编码格式
log4j.appender.FILE.File = ${catalina.base}/....是Log日志的位置所在,${catalina.base}是对应的tomcat实例 一般情况下${catalina.home}为tomcat 的lib/bin目录的父目录,catalina.base指 向每个Tomcat目 录私有信息的位置,就是conf、logs、temp、webapps和work的父目录。
对于Log日志的使用方法:
在java使用sql的相关方法中,在又try方法的相关类中,使用以下方式:
Logger log = Logger.getLogger(this.getClass());
在catch中写
log.error(e);
就可以将日志输出到对应的日志文件中
以上是关于web项目log4j日志配置和使用的主要内容,如果未能解决你的问题,请参考以下文章
log4j无日志生成? 我将一个web项目部署在tomcat server.xml配置文件中,当我启动tomcat是无日志输出。