一、是什么

Log4J的配置文件用来设置记录器的级别、存放器和布局的,说白了就是一个日志记录工具,可以打印记录一些程序运行、操作的记录。在开发中debug时可以随时查看,非常方便好用。它可以接key=value格式的设置或xml格式的设置信息,有log4j.xml和log4j.peoperties两种配置方式,较常用的是log4j.peoperties方式。

二、配置说明

这里以log4j.properties文件为例,记录一下配置说明,主要也是配置记录器的级别、存放位置、以及格式等。

基本配置流程:

2.1 配置根Logger

2.2 配置日志信息输出目的地Appender及Appender选项

2.3 配置日志信息的格式(布局)及格式布局选项

三、log4j.properties文件配置

3.0 文件存放位置:项目的src目录下

3.1 配置根Logger

log4j.rootLogger  =   [ level ]   ,  appenderName ,  appenderName1 ,  …

说明:

level:日志输出级别,可选 FATAL、ERROR、WARN、INFO、DEBUG五种级别

appenderName 是日志输出地的名字,可自定义,可配置多个输出位置,逗号隔开

注解是在每行开头使用

#配置三个日志记录器,级别为debug(最低级),名字依次为C、D、F
log4j.rootLogger = debug ,  C ,  D ,  F

3.2 配置日志信息输出目的地Appender及Appender选项

Appender共有五种:

org.apache.log4j.ConsoleAppender                 - - - - 输出到控制台
org.apache.log4j.FileAppender                    - - - - 输出到文件
org.apache.log4j.DailyRollingFileAppender        - - - - 每天输出产生一个日志文件
org.apache.log4j.RollingFileAppender             - - - - 文件到达指定大小时输出产生一个新文件
org.apache.log4j.WriterAppender                  - - - - 将日志以流格式发送到任意指定的地方

Appender选项这里不多介绍了,用的也不多,想了解的可以自己查。最常见的就是下面几个:

#控制台日志,打印为out格式,默认为out格式,可指定为err格式
log4j.appender.C.Target=System.out#文件类可指定文件名(路径)、大小、输出最低层次等
log4j.appender.F.File = logs/ssm.log
log4j.appender.F.MaxFileSize = 10MB
log4j.appender.F.Threshold = ALL

3.3 配置日志信息的格式(布局)及格式布局选项

布局格式共有四种:

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

最常用的就是org.apache.log4j.PatternLayout 啦,因为可以按照我们想要的形式输出格式,Log4J采用类似Java语言中的printf函数的打印格式格式化日志信息,常见打印参数如下:

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,

%d: 输出日志日期或时间,默认格式为ISO8601,可指定格式如:%d{yyyy MM dd HH:mm:ss,SSS},输出类似:2019年6月7日 22:16:35,932

%r: 输出自应用启动到输出该log信息耗费的毫秒数

%c: 输出日志信息所属的类目,通常就是所在类的全名

%t: 输出产生该日志事件的线程名

%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及行数。 
举例:Testlog4.main(TestLog4.java:10)

%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。

%F: 输出日志消息产生时所在的文件名称

%L: 输出代码中的行号

%m: 输出代码中指定的消息,产生的日志具体信息

%M 输出日志发生的方法名

%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行

说这么多也不如看一段工程中用过的配置。这里看一段log4j.properties配置代码,加强理解,看看具体怎么用。

#log4j.propertieslog4j.rootLogger=DEBUG,Console,Filelog4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%nlog4j.appender.File = org.apache.log4j.RollingFileAppender
log4j.appender.File.File = logs/ssm.log
log4j.appender.File.MaxFileSize = 10MB
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

以上!

文中如有不当、错误、或改进之处等欢迎讨论,一起进步!

SSM框架下log4j配置说明相关推荐

  1. SSM框架下log4j的配置和使用

    2019独角兽企业重金招聘Python工程师标准>>> 一.引入相关包和依赖 我用的是pom文件的引入,我使用的是slf4j+log4j的方式,还有另一种方式为commons-log ...

  2. SSM框架下对信息执行修改操作时的信息弹窗回显以及对信息修改后对数据库的更新问题

    SSM框架下对信息执行修改操作时的信息弹窗回显以及对信息修改后的同步问题 概括 主要说一下前端的实现 概括 今天在做实训作业时,有个对数据信息进行修改的操作,要求点击修改按钮后弹出修改框,栏目中需要显 ...

  3. SSM框架下实现验证码图片验证功能(源码)

    SSM框架下实现验证码图片验证功能 背景图片资源路径 https://download.csdn.net/download/hero_qhz/10322064 一.首先,在pom里面加上需要用的资源j ...

  4. SSM框架下实现form表单提交的方式

    实现form表单的提交有多种方式,这里我们主要讲两种常用的. 注:此Demo是在SSM框架下完成的,数据库采用MySQL,关于ssm整合的相关知识,这里不做过多赘述.主要展示表单提交方式,暂不考虑代码 ...

  5. ssm框架下的文件上传和下载

    ssm下的文件上传和下载 1. 文件上传 1.1 文件上传需要的依赖 文件上传需要使用到 commons-fileupload 和 commons-io 两个 jar 包. <dependenc ...

  6. SSM框架下分页的实现(封装page.java和List?)

    之前写过一篇博客  java分页的实现(后台工具类和前台jsp页面),介绍了分页的原理. 今天整合了Spring和SpringMVC和MyBatis,做了增删改查和分页,之前的逻辑都写在了Servle ...

  7. ZUI + SSM框架下数据表格的使用

    完成一个小项目,后端为SSM框架,前端使用了ZUI框架,下面记录了如何使用zui框架下的datagrid组件来实现传统页面下 1.加载数据 2.关键字搜索 3.按照字段排序 4.全选 常用功能的实现, ...

  8. 浅谈SSM框架下实现简单登录界面

    SSM框架搭建结果 Login.jsp <%@ page language="java" contentType="text/html; charset=UTF-8 ...

  9. SSM框架下后台数据库传送到前端jsp文件中

    SSM框架中后台存储在数据库中的数据,如何传送到前端中使用呢? 前提:SSM框架已经搭好: Category.xml中的SQL语句集已经写好 Category中的GetXX()和SetXX()方法也已 ...

最新文章

  1. 最新NLP架构的直观解释:多任务学习– ERNIE 2.0(附链接)| CSDN博文精选
  2. Docker常用命令操作——1)、镜像操作;2)、容器操作
  3. sublime Text3插入参考文献问题
  4. sqoop导入-hdfs
  5. 更改Android Studio中AVD的默认路径
  6. petshop学习笔记(4)
  7. 加密货币的天堂何在?
  8. 网络协议分析-TCP协议分析
  9. cordic ip核 vivado_Xilinx Vivado Cordic 核的使用
  10. flutter,ios测试用户安装app提示“无法安装此app,因为无法验证其完整性”
  11. 你知道JavaScript的继承有几种写法吗?
  12. games101 作业1
  13. 阅读笔记--神经网络与深度学习(邱锡鹏)
  14. 微信小程序-导航吸顶+view锚点
  15. desktoplayer.exe病毒及d:\w7rtm\base\wcp\sil\merged\ntu\ntsystem.cpp的解决方案
  16. Buddy 内存管理机制(下)
  17. Charles入门教程
  18. arg是什么函数_不定参数函数实现var_arg系列的宏
  19. 逆向分析学习入门教程2
  20. 升级AndrOid4.3,三星S4升级Android 4.3系统后应用停止运行的解决办法图解

热门文章

  1. 递归神经网络LSTM原理——结合实例MATLAB实现
  2. Java中的getClass()方法
  3. java设计模式 连续处理_Java 设计模式(12) —— 状态模式
  4. 智能颈部按摩仪设计——3.功能模式实现
  5. 华为鸿蒙已经投入使用了吗,华为手机或启用鸿蒙系统!
  6. popstate_js怎么解决popstate多个页面连续返回问题
  7. 计算机组装课程标准,《计算机组装与维修》课程标准.doc
  8. TomCat启动不了的原因
  9. Origin:如何使用Origin绘制填充区域的误差线条
  10. Realtek SDK缓冲区溢出和命令执行漏洞说明