log4j的配置文件就是用来设置记录器的级别存放器布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。

1、配置文件

log4j配置文件的基本格式如下:

  ERROR 为严重错误 主要是程序的错误
  WARN 为一般警告,比如session丢失
  INFO 为一般要显示的信息,比如登录登出
  DEBUG 为程序的调试信息

  1. #配置根Logger:[输出级别],appender附加器1,appender附加器2...(附加器自己命名)
  2. #日志输出级别由低到高: DEBUG < INFO < WARN < ERROR < FATAL
  3. log4j.rootLogger = [日志输出级别level],附加器appenderName1,附加器appenderName2...
  4.  
  5. #配置日志信息输出目的地Appender
  6. log4j.appender.附加器appenderName = appender类的完全限定名
  7. log4j.appender.附加器appenderName.option1 = value1
  8. log4j.appender.附加器appenderName.optionN = valueN
  9.  
  10. #配置日志信息的格式
  11. log4j.appender.附加器appenderName.layout = layout类的完全限定名
  12. log4j.appender.附加器appenderName.layout.option1 = value1
  13. log4j.appender.附加器appenderName.layout.optionN = valueN

如下配置例子:运行项目会在ConsoleAppender(即控制台)输出ConversionPattern格式信息,并在:eclipse目录下/logs/springmvcMybist/ssm.log输出日志内容

  1. #定义LOG输出级别
  2. log4j.rootLogger=INFO,Console,File
  3. #定义日志输出目的地为控制台
  4. log4j.appender.Console=org.apache.log4j.ConsoleAppender
  5. log4j.appender.Console.Target=System.out
  6. #可以灵活地指定日志输出格式,下面一行是指定具体的格式
  7. log4j.appender.Console.layout = org.apache.log4j.PatternLayout
  8. log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
  9.  
  10. #文件大小到达指定尺寸的时候产生一个新的文件
  11. log4j.appender.File = org.apache.log4j.RollingFileAppender
  12. #指定输出目录
    log4j.appender.File.File = logs/springmvcMybist/ssm.log
    #定义文件最大大小
    log4j.appender.File.MaxFileSize = 10MB
    #输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
    log4j.appender.File.Threshold = ALL
    log4j.appender.File.layout = org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern =[%p] %d [%c]-%m%n

Appender :日志输出目的地,Log4j提供的appender有以下几种:(appender类完全限定名)

  1. org.apache.log4j.ConsoleAppender(控制台),
    org.apache.log4j.FileAppender(文件),
  2. org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
  3. org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
  4. org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

Layout:日志输出格式,Log4j提供的layout有以下几种:(layout类的完全限定名)

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

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

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

3. 为不同的 Appender 设置日志输出级别:
当调试系统时,我们往往注意的只是异常级别的日志输出,但是通常所有级别的输出都是放在一个文件里的,如果日志输出的级别是DEBUG!?工作量就大了,debug是最低级别,输出全部。
这时我们也许会想要是能把异常信息单独输出到一个文件里该多好啊。当然可以,Log4j已经提供了这样的功能,我们只需要在配置中修改AppenderThreshold 就能实现,比如下面的例子:

  1. #1、配置根Logger:[输出级别],附加器1,附加器2...
  2. log4j.rootLogger=DEBUG,CONSOLE,D,E
  3.  
  4. #2、配置日志信息输出目的地Appender
  5. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  6. log4j.appender.CONSOLE.Target=System.out
  7. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  8. log4j.appender.CONSOLE.layout.ConversionPattern=[SSM] %d [%t] %-5p %-50.50c-%m%n
  9.  
  10. #输出到日志文件
  11. #DailyRollingFileAppender每天产生一个日志文件
  12. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  13. log4j.appender.D.File = logs/springmvcMybaties/ssm.log
  14. log4j.appender.D.Append = true
  15. #输出DEBUG级别以上的日志
  16. log4j.appender.D.Threshold = DEBUG
  17. log4j.appender.D.layout = org.apache.log4j.PatternLayout
  18. log4j.appender.D.layout.ConversionPattern = [%p] [%d{yyyy-MM-dd HH\:mm\:ss}] [%c] [ %t:%r ] %m%n
  19.  
  20. #保存异常信息到单独文件
  21. log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
  22. #异常日志文件名:eclipse根目录\logs
  23. log4j.appender.E.File = logs/springmvcMybaties/ssm-error.log
  24. log4j.appender.E.Append = true
  25. #只输出ERROR级别以上的日志
  26. log4j.appender.E.Threshold = ERROR
  27. log4j.appender.E.layout = org.apache.log4j.PatternLayout
  28. log4j.appender.E.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}] [%c] [ %t:%r ] %m%n

日志的输出路径可以放绝对路径

另外log4j还可以配置发邮件功能(没试过)可以参考https://www.cnblogs.com/learnspace/p/6850129.html

Log4j配置记录的更多相关文章

  1. Log4j配置记录(特定java包/类的日志级别控制)

    最近使用log4j,关于日志级别的如何配置生效百思不得其解,花了些时间,误打误撞终于整了,记录一下,备忘. 注意: 1.图中的2(log4j.logger.com.taobao)限制级别最高,它直接指 ...

  2. ELK环境配置+log4j日志记录

    ELK环境配置+log4j日志记录 1. 背景介绍 在大数据时代,日志记录和管理变得尤为重要. 以往的文件记录日志的形式,既查询起来又不方便,又造成日志在服务器上分散存储,管理起来相当麻烦, 想根据一 ...

  3. log4j配置相对路径实现日志记录

    从网上简单搜索了一下,发现有三种介绍的方法.总结在这里1. 解决的办法自然是想办法用相对路径代替绝对路径,其实log4j的FileAppender本身就有这样的机制,如: log4j.appender ...

  4. 使用log4j配置不同文件输出不同内容

    敲代码中很不注意写日志,虽然明白很重要.今天碰到记录日志,需要根据内容分别输出到不同的文件. 参考几篇文章: 感觉最详细:http://blog.csdn.net/azheng270/article/ ...

  5. log4j 配置

    给java项目添加log4j日志: 1.下载log4j jar包,放入lib目录, 导入项目中 2.创建log4j.properties 文件  目录 Src 3.在需要使用输出的类中使用 priva ...

  6. 项目重构之数据源配置与优化:log4j 配置数据库连接池Druid,并实现日志存储到数据库

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583] ...

  7. Log4j配置详解之log4j.xml

    Log4j配置详解之log4j.xml Log4J的配置文件(Configuration File)就是用来设置记录器的级别.存放器和布局的,它可接key=value格式的设置或xml格式的设置信息. ...

  8. 多进程使用同一log4j配置导致的日志丢失与覆盖问题

    最近接手了一个流传很多手的魔性古早代码,追日志时发现有明显缺失.对log4j不熟,不过可以猜测日志出问题肯定和多进程使用同一个log4j配置有关.经多次排查,终于捋清了其中逻辑.本文对排查过程进行复盘 ...

  9. 20200725_java爬虫_项目创建及log4j配置

    0. 摘要 0.1 添加log4j依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>sl ...

随机推荐

  1. Spark Distributed matrix 分布式矩阵

    RowMatrix行矩阵 import org.apache.spark.rdd.RDD import org.apache.spark.mllib.linalg.Vectors import org ...

  2. 特殊字符url编码以后再解码后出现错误(&not , &cent, &curren, &pound)

    Url编码的原内容是 “&notify_url=xxxx”  经过url编码以后再解码回来  “&not”的部分就变成了“¬” 解决方案:把原文里面待url编码的&符号先替换成 ...

  3. history.back();谷歌浏览器,iframe后退问题

    history.back();谷歌浏览器,iframe后退直接会后退父页面. 使用以下方式即可//document.referrer是获取上一页的urllocation.href=document.r ...

  4. CKFinker 2.5.0.1 去demo标示

    演示版会在文件浏览界面显示演示消息,分别是左下角(文件夹框下面)和列表框上部 都是通过修改ckfinder.js来实现 右下角标示: 查找: {if(C.getItem(E).rd("\x7 ...

  5. python re(正则表达式模块)学习

    一.简介 正则表达式本身是一种小型的.高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配.正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎 ...

  6. day16 十六、包、循环导入、导入模块

    一.包的概念 包:一系列模块的集合体.包通过文件夹管理一系列功能相近的模块 重点:包中一定有一个专门用来管理包中所有模块的文件 包名:存放一系列模块的文件夹的名字 包名(对象)存放的是管理模块的那个文 ...

  7. 2019年3月8日A股百点暴跌行情思考

    本人操作: [海通证券]:早盘挂单并撤单,盘中高位卖出,尾盘低位接回. 总结 - 正确:持股数量不变,成本降低. [信雅达]:早盘低开加仓,盘中高位卖出,跌后接回,尾盘跌停. 总结 -  正确:加仓, ...

  8. 【立体几何】分类讨论很细节 Gym - 101967I Путешествие по тору

    http://codeforces.com/gym/101967/attachments 题意:定义了一个甜甜圈.(torus) 不是让你二重积分啦233 现在有一个星球是甜甜圈形状的,它有四条很关键 ...

  9. Interllij IDEA中启动web项目

    1.在IDEA中打开你的Web应用,点击一下绿色三角形左边的框框,然后在弹出框上选择Edit Configurations,会弹出一个配置面板. 2.在弹出的面板中我们点击Defaults,然后找到T ...

  10. vivi.c框架

    内核文档: V4L2-framework.txt UVC:usb video controll UVC驱动框架: system call: open read write -------------- ...