zoukankan      html  css  js  c++  java
  • log4j.properties配置内容的理解

      一直知道log4j是用来记录日志的,但一直没去看log4j到底是怎么用的,这两天看了几个log4j.properties配置语句详解的帖子,在这里简陋地记录一下。

      在完全不知道log4j怎么用的时候,我想先知道log4j使用时的效果以及具体需要哪些步骤来实现效果。

    log4j可以将日志以文件的形式输出,也可以输出打印在控制台上,同时可以设置输出的日志内容显示格式、日志文件的生成方式(追加、覆盖、设置日志文件大小等等)。

    看过几个详细介绍的帖子以及自己动手试了一下,最终的log4j日志在Console上的显示效果和tomcat日志差别不大,效果如下:

    log4j的使用步骤:

    1.添加log4j的jar包(maven项目就直接添加jar包依赖)

    2.在src目录下(maven项目放在resource目录下)创建log4j.properties文件并进行配置(这里是配置成在控制台打印输出)

    3.在java代码中写入日志内容,当执行到该代码时则会在控制台中显示日志内容(若是配置为生成日志文件则会生成日志文件)

    在log4j中最重要的一步就是在log4j.properties中的配置,先给出log4j.properties的配置格式为:

    #配置根Logger
    log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …
    #以下代码为appenderName*的基本格式配置
    ------------------------------------------------------------------------------------------------------------
    #配置日志信息输出目的地Appender
    log4j.appender.appenderName  =  fully.qualified.name.of.appender.class 
      log4j.appender.appenderName.option1  =  value1 
      … 
      log4j.appender.appenderName.optionN  =  valueN 
    
    #配置日志信息的格式布局(layout)
    log4j.appender.appenderName.layout  =  fully.qualified.name.of.layout.class 
      log4j.appender.appenderName.layout.option1  =  value1 
      … 
      log4j.appender.appenderName.layout.optionN  =  valueN 
    ------------------------------------------------------------------------------------------------------------

    以基本的输出日志到控制台的配置示例作上方配置格式的对比:

    ### 全局日志等级配置,输出位置配置###  
    log4j.rootLogger=debug,stdout 
    ### 输出信息到控制台 ###  
    # 配置日志信息输出目的地Appender log4j.appender.stdout
    =org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out
    # 配置日志信息的格式布局(layout) log4j.appender.stdout.layout
    =org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
    每个appenderName可任意命名,但都要有对应的日志输出目的地和日志信息格式分布的配置,以上只是最简单的log4j.properties配置,实际使用可以根据自己的需要进行增加设置。

    下面对日志配置的各个部分的设置项进行介绍:
    全局日志等级配置,输出标准设置
    log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …

      日志等级分为以下几级:

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

    常用的只有debug、info、warm、error四个等级;

    每个appenderName都要有相对应的设置包括Appender和Layout的配置:

    log4j提供的Appender有以下几种:

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

    log4j提供的布局格式Layout有以下几种:

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

    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
    • %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
    • 所以可以根据自己的需求配置自由搭配的输出格式,如:%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n

    下面是一个log4j.properties配置同时生成debug级别、error级别日志文件和打印到控制台示例:

    ### 全局日志等级配置,输出标准设置 ###  
    log4j.rootLogger=debug,stdout,DDD,EEE  
    ### 输出信息到控制台 ###  
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
    log4j.appender.stdout.Target=System.out  
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
    log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n  
    ### 输出DEBUG 级别以上的日志到=/Users/tinybye/Documents/log4j/debug.log ###  
    log4j.appender.DDD=org.apache.log4j.DailyRollingFileAppender  
    log4j.appender.DDD.File=/Users/tinybye/Documents/log4j/debug.log  
    log4j.appender.DDD.Append=true  
    log4j.appender.DDD.Threshold=DEBUG  
    log4j.appender.DDD.layout=org.apache.log4j.PatternLayout  
    log4j.appender.DDD.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n  
    ### 输出ERROR 级别以上的日志到=/Users/tinybye/Documents/log4j/error.log ###  
    log4j.appender.EEE=org.apache.log4j.DailyRollingFileAppender  
    log4j.appender.EEE.File=/Users/tinybye/Documents/log4j/error.log  
    log4j.appender.EEE.Append=true  
    log4j.appender.EEE.Threshold=ERROR  
    log4j.appender.EEE.layout=org.apache.log4j.PatternLayout  
    log4j.appender.EEE.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n 

    配置语句作用详解:

    #全局日志等级配置,输出位置
    #log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  …
    log4j.rootLogger=error, stdout,logfile
    #stdout控制器(标准输出)
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender #设置Appender
    log4j.appender.stdout.Target=System.out  #设置输出目标
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout #设置布局
    log4j.appender.stdout.layout.ConversionPattern=%d %p [%c]:%L - %m%n #设置输出格式
    #输出日志文件
    log4j.appender.logfile=org.apache.log4j.RollingFileAppender  #设置Appender
    log4j.appender.logfile.File=pss.log #默认输出到tomcat的根路径或者运行测试工程的根路径
    log4j.appender.logfile.MaxFileSize=512KB #设置日志文件的最大内存大小
    # Keep three backup files.
    log4j.appender.logfile.MaxBackupIndex=3  #设置日志文件的最大数量,当日志文件达到最大指定内存时则另外再生成一个文件存放日志
    log4j.appender.logfile.Append = true #ture则将日志信息增加到指定文件中,false则将日志信息覆盖指定文件内容,默认是true
    log4j.appender.logfile.Threshold = ERROR  #设置只输出ERROR级别以上的日志
    # Pattern to output: date priority [category] - message
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout #设置布局
    log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n #设置输出格式

    最后再附上上方日志简单效果图的java代码:

    1 public class Test {
    2     public static void main(String[] args) {
    3         Logger log = Logger.getLogger(Test.class);
    4         log.info("这是一条信息");
    5         log.error("这是一条错误信息");
    6     }
    7 }

     以上就是本人对log4j的使用进行记录的所有内容,如有错的地方,欢迎批评指正。



  • 相关阅读:
    Java核心技术 卷一 笔记四 库类的直接使用
    Java核心技术 卷一 笔记三 大数值及数组
    Java核心技术 卷一 笔记2 字符串的复制
    Java核心技术 卷一 笔记1
    修改css 样式后, hover事件 不生效
    修改 element ui input 输入框 样式不生效问题
    css3 计算属性
    Vue3 改动系列
    浏览器实现,向下滑动 鼠标滚轮,页面横向移动
    linux ceont0s7 vue 打包压缩图片 一直报错
  • 原文地址:https://www.cnblogs.com/new-life/p/8567747.html
Copyright © 2011-2022 走看看