log4j.properties配置说明

1. log4j配置

# ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF
LOG_LEVEL=INFO
log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE,ERR # 打印日志到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n # 打印日志到文件
log4j.logger.FILE=INFO,FILE
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${catalina.base}/logs/admin.log
log4j.appender.FILE.Encoding=utf-8
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=100
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n

2. LOG_LEVEL的级别说明

  LOG_LEVEL为日志的输出级别,共有7级:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL

  • off 最高等级,用于关闭所有日志记录。
  • fatal 指出每个严重的错误事件将会导致应用程序的退出。
  • error 指出虽然发生错误事件,但仍然不影响系统的继续运行。
  • warm 表明会出现潜在的错误情形。
  • info 一般和在粗粒度级别上,强调应用程序的运行全程。
  • debug 一般用于细粒度级别上,对调试应用程序非常有帮助。
  • all 最低等级,用于打开所有日志记录。

  Log4j只建议使用4个级别,优先级从高到低分别是error,warn,info和debug。如果在使用了info级别的日志,只会输出info级别下info、debug等的日志,warn、error等日志不会被打印。

3. appender的日志输出方式

  • org.apache.log4j.ConsoleAppender :以控制台方式输出日志
  • org.apache.log4j.FileAppender :以文件形式输出日志
  • org.apache.log4j.DailyRollingFileAppender :以每天产生一个日志文件
  • org.apache.log4j.RollingFileAppende :转动输出,当文件达到指定大小产生一个新文件
  • org.apache.log4j.WriterAppender :以流的形式输出到其它地方

如:输出到控制台

log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender

4. layout日志输出格式说明

  • org.apache.log4j.HTMLLayout :以HTML表格形式布局
  • org.apache.log4j.PatternLayout :可以灵活地指定布局模式
  • org.apache.log4j.SimpleLayout :包含日志信息的级别和信息字符串
  • org.apache.log4j.TTCCLayout :包含日志产生的时间、线程、类别等等信息

一般使用PatternLayout,自己配置输出格式。

5. 输出格式参数说明

Log4J采用类似C语言中的printf函数的打印格式格式化日志信息

  • %m 输出代码中指定的消息
  • %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  • %r 输出自应用启动到输出该log信息耗费的毫秒数
  • %c 输出所属的类目,通常就是所在类的全名
  • %t 输出产生该日志事件的线程名
  • %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
  • %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
  • %F 输出日志事件的发生位置,包括类目名、发生的线程。举例:Testlog4.main(TestLog4.java:10)
  • %l 输出日志事件的发生位置在代码中的行数。举例:Testlog4.main(TestLog4.java:10 )

如:

log4j.appender.logRecord.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n
2018-06-25 16:26:40 com.xk.edu.interception.LogRecordInterception@(LogRecordInterception.java:22):pre handle --->>> --->>>--- log4j.appender.logRecord.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} (%L)\:%m%n
2018-06-25 16:30:39 (22):pre handle --->>> --->>>--- log4j.appender.logRecord.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss},%m%n
2018-06-25 16:35:16,pre handle --->>> --->>>---

6. 配置打印异常日志到一个单独的文件

把异常单独打印到一个单独的文件中,方便查看定位排查问题。

配置如下:

# 保存异常信息到单独文件
log4j.appender.ERR = org.apache.log4j.DailyRollingFileAppender
# 每天产生一个日志文件
log4j.appender.ERR.DatePattern='.'yyyy-MM-dd
# 异常日志文件名
log4j.appender.ERR.File=${catalina.base}/logs/error/adminError.log
log4j.appender.ERR.Append = true
# 是否立即输出
log4j.appender.ERR.ImmediateFlush=true
log4j.appender.ERR.Encoding=utf-8
# 只输出ERROR级别以上的日志!!!
log4j.appender.ERR.Threshold = ERROR
log4j.appender.ERR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERR.layout.ConversionPattern = [%-5p][%d{yyyyMMdd HH:mm:ss,SSS}][%C{1}:%L] %m%n

上面配置中产生的error以上级别的日志会打印到logs/adminError.log中,明天会把今天产生的异常日志保存一个文件中,名称是adminError.log + 今天的日期,日期格式是根据log4j.appender.ERR.DatePattern定义的格式。

7. 日志过滤配置

如在6中把error级别以上的日志打印到异常文件中去了,如果不配置过滤,会在admin.log中打印info以上级别的日志,那样就重复打印了error以上级别的日志。

新FILE文件配置如下

# 打印日志到文件,排除error的日志
log4j.logger.FILE=INFO,FILE
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${catalina.base}/logs/admin.log
log4j.appender.FILE.Encoding=utf-8
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=100
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n
# 不打印warn以上级别的日志
log4j.appender.FILE.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.FILE.filter.infoFilter.LevelMin=DEBUG
log4j.appender.FILE.filter.infoFilter.LevelMax=WARN

这样就只在admin.log中打印DEBUG级别到WARN级别的日志了。

8. 自定义logger的输出

如:

log4j.logger.com.xk.edu.interception.LogRecordInterception=INFO,logRecord

这样自定义了一个logger,不使用log4j.rootLogger。自定义的logger之间的日志是隔离的,如上配置的,只打印LogRecordInterception类下的日志。

如:

log4j.logger.com.xk.edu.dao=DEBUG

com.edu.dao包下的内容按DEBUG级别输出,因为dao包下是mapper文件,加上这一个配置就可以打印sql语句了。

9. 配置文件

以下贴出配置文件:

# ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF
LOG_LEVEL=INFO
log4j.rootLogger=${LOG_LEVEL},CONSOLE,FILE,ERR # 打印日志到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Encoding=utf-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{8}@(%F:%L):%m%n
log4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %C{1}@(%F:%L):%m%n # 打印日志到文件,排除error的日志
log4j.logger.FILE=INFO,FILE
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=${catalina.base}/logs/admin.log
log4j.appender.FILE.Encoding=utf-8
log4j.appender.R.MaxFileSize=100MB
log4j.appender.R.MaxBackupIndex=100
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
#log4j.appender.FILE.layout=org.apache.log4j.HTMLLayout
log4j.appender.FILE.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n
# 不打印warn以上级别的日志
log4j.appender.FILE.filter.infoFilter = org.apache.log4j.varia.LevelRangeFilter
log4j.appender.FILE.filter.infoFilter.LevelMin=DEBUG
log4j.appender.FILE.filter.infoFilter.LevelMax=WARN # 保存异常信息到单独文件
log4j.appender.ERR = org.apache.log4j.DailyRollingFileAppender
# 每天产生一个日志文件
log4j.appender.ERR.DatePattern='.'yyyy-MM-dd
# 异常日志文件名
log4j.appender.ERR.File=${catalina.base}/logs/error/adminError.log
log4j.appender.ERR.Append = true
# 是否立即输出
log4j.appender.ERR.ImmediateFlush=true
log4j.appender.ERR.Encoding=utf-8
# 只输出ERROR级别以上的日志!!!
log4j.appender.ERR.Threshold = ERROR
log4j.appender.ERR.layout = org.apache.log4j.PatternLayout
log4j.appender.ERR.layout.ConversionPattern = [%-5p][%d{yyyyMMdd HH:mm:ss,SSS}][%C{1}:%L] %m%n # 输出拦截器的日志, 只输出LogRecordInterception类下的日志
log4j.logger.com.xk.edu.interception.LogRecordInterception=INFO,logRecord
log4j.appender.logRecord=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logRecord.Append=true
# 是否立即输出
log4j.appender.logRecord.ImmediateFlush=true
# 一分钟产生一个日志文件
#log4j.appender.logRecord.DatePattern='.'yyyy-MM-dd-HH-mm
log4j.appender.logRecord.DatePattern='.'yyyy-MM-dd
log4j.appender.logRecord.Encoding=utf-8
log4j.appender.logRecord.layout=org.apache.log4j.PatternLayout
log4j.appender.logRecord.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH\:mm\:ss} %C{8}@(%F\:%L)\:%m%n # 打印 dao 下的 sql
log4j.logger.com.xk.edu.dao=DEBUG

参考:

http://www.blogjava.net/zJun/archive/2006/06/28/55511.html

https://blog.csdn.net/zxh317162782/article/details/51233704

https://blog.csdn.net/lingfenglangshao/article/details/78334147

log4j.properties配置说明的更多相关文章

  1. log4j.properties配置说明学习网址

    https://blog.csdn.net/wangzhaotongalex/article/details/51308802

  2. log4j.properties 日志文件的详细配置说明

    一.在一个web 项目中,使用tomcat 启动通常会在控制台输出出现一个警告信息: 通常为未添加 log4j.properties文件的原因. 二.下面以一个普通的maven项目为例说明一下 1. ...

  3. log4j.properties配置详解

    1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN < ...

  4. log4j.properties配置

    一.日志:除了能记录异常信息,还可以记录程序正常运行时的关键信息. 使用log4j来进行日志文件记录经典步骤: 01.在项目中创建一个lib文件夹,然后将下载好的jar包copy到该文件夹下 02.对 ...

  5. log4j日志文件 log4j.xml log4j.properties配置

    1,导入log4j  jar包; 2,配置log4j.xml或log4j.properties文件; ------------------------------------------------- ...

  6. log4j.properties 使用

    一.参数意义说明 输出级别的种类 ERROR.WARN.INFO.DEBUG ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如 ...

  7. java 执行jar指定log4j.properties文件位置

    默认情况下,log4j.properties会被加载,并且这个文件需要在classpath根目录,当打包jar时,会打包打jar内部,当需要修改日志级别时,会比较麻烦 可以使用:java -jar - ...

  8. log4j.properties 详解与配置步骤

    一.log4j.properties 的使用详解 1.输出级别的种类 ERROR.WARN.INFO.DEBUGERROR 为严重错误 主要是程序的错误WARN 为一般警告,比如session丢失IN ...

  9. 转载:log4j.properties log4j.xml 路径问题

    自动加载配置文件: (1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找lo ...

随机推荐

  1. 基于 Consul 实现 MagicOnion(GRpc) 服务注册与发现

    0.简介 0.1 什么是 Consul Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置. 这里所谓的服务,不仅仅包括常用的 Api 这些服务,也包括软件开发过程 ...

  2. java模式—装饰者模式

    装饰者模式 1.意图: 动态地给一个对象添加一些额外的职责.就增加功能来说, Decorator模式相比生成子类更为灵活.该模式以对客 户端透明的方式扩展对象的功能. 2.适用环境 (1)在不影响其他 ...

  3. Android--多线程之AsyncTask

    前言 本片博客将介绍AsyncTask的使用,之前有介绍过线程和进程.而在AsyncTask中,运行在用户界面中,执行异步操作,并且把执行结果发布在UI线程上,且也不需要处理线程和Handler.在本 ...

  4. 原生js ajax请求

    什么是ajax AJAX 是一种用于创建快速动态网页的技术. 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. 这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新, ...

  5. 自动化测试 | UI Automator 进阶指南

    UI Automator 相关介绍: 跨应用的用户界面自动化测试 包含在 AndroidX Test(https://developer.android.com/training/testing) 中 ...

  6. jdk8 分隔字符串最新方法

    //已字符串分隔方法最新 方法 StringJoiner stringJoiner=new StringJoiner(","); stringJoiner.add("a& ...

  7. vc-mysql-sniffer统计MySQL的SQL分布

    有时候我们需要统计线上的SQL执行情况,比如想知道哪条SQL执行最频繁,我们可以开启general_log,然后进行统计,但是general_log开启非常损耗性能,那么我们可以使用vc-mysql- ...

  8. python函数的参数细节

    按"指针"传递 python中变量赋值.参数传递都是通过"指针"拷贝的方式进行的.除了按"指针"拷贝,还有一种按值拷贝的方式,关于按值.按指 ...

  9. 翻译:delete语句(已提交到MariaDB官方手册)

    本文为mariadb官方手册:DELETE语句的译文. 原文:https://mariadb.com/kb/en/delete/ 我提交到MariaDB官方手册的译文:https://mariadb. ...

  10. 解读经典《C#高级编程》第七版 Page38-45.核心C#.Chapter2

    前言 控制流是语言中最基础的部分,我们不谈具体的细节,只讲讲一些关键和有趣的点. 01 流控制 条件语句:if, else if, else if语句的使用非常值得细讲,如何是好的使用习惯.有一点非常 ...