• Log4j记日志功能


    1、Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局)。这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。  

    2、Log4j格式详解

     log4j.rootLogger = 日志级别,appender1, appender2, ….

    • 日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
    • 注意,需在控制台输入,只需将其中一个appender定义为stdout即可。(只是定义输出源的名称)
    • 注意,rootLogger默认是对整个工程生效,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效

        log4j.appender.appender1 = org.apache.log4j.日志输出到哪儿

    • ConsoleAppender(控制台),可选属性 Threshold (默认DEBUG)、ImmediateFlush(默认=true)、Target(默认=System.out)
    • FileAppender(文件) ,可选属性 Threshold 、ImmediateFlush、Append(默认=true)、File
    • DailyRollingFileAppender(每天产生一个日志文件),可选属性    Threshold 、ImmediateFlush、Append、DatePattern
    • RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件) ,可选属性 Threshold 、ImmediateFlush、Append、File、MaxFileSize、MaxBackupIndex
    • WriteAppender(将日志信息以流格式发送到任意指定的地方)
    • JDBCAppender(将日志信息保存到数据库中)

     log4j.appender.appender1.File=文件目录及文件${user.home}/logs/...

     log4j.appender.appender1.MaxFileSize=最大文件大小

     log4j.appender.appender1.MaxBackupIndex=备份文件个数

        log4j.appender.appender1.DatePattern=对应格式文件(滚动日志)

        log4j.appender.appender1.Threshold = 日志级别

        log4j.appender.ServerDailyRollingFile.Append=true

    • 文件目录及文件,例如,/home/admin/logs/hutudan.log
    • 最大文件大小,例如,100KB
    • 备份文件个数,例如,1
    • '.'yyyy-MM : 每月 ;  '.'yyyy-ww每周 ;  '.'yyyy-MM-dd每天 ;  ':每天两次
      '.'yyyy-MM-dd-HH每小时 ;   '.'yyyy-MM-dd-HH-mm每分钟
    • 输出日记级别以上的 日志,例如:debug,info
    • 追加上一次的文件后面,继续写

        log4j.appender.ServerDailyRollingFile.DatePattern=日志后缀格式

    • 例如,'.'yyyy-MM-dd

        log4j.appender.appender1.layout=org.apache.log4j.日志布局格式

    • HTMLLayout(以HTML表格形式布局)
    • SimpleLayout(包含日志信息的级别和信息字符串)
    • TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
    • PatternLayout(可以灵活的指定布局格式,常用

        log4j.appender.appender1.layout.ConversionPattern=日志输出格式

    • 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
    • %c 输出日志信息所属的类的全名
    • %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18  22:10:28
    • %f 输出日志信息所属的类的类名
    • %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
    • %m 输出代码中指定的信息,如log(message)中的message
    • %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
    • %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    • %r 输出自应用启动到输出该日志信息所耗费的毫秒数
    • %t 输出产生该日志事件的线程名

        总结:

    • Logger类:完成日志记录,设置日志信息级别
    • Appender类:决定日志去向,终端、DB、硬盘
    • Layout类:决定日志输出的样式,例如包含当前线程、行号、时间

    附录:一张可供参考的配置

    #定义LOG输出级别
    log4j.rootLogger=INFO,Console,F,E
    
    #定义mybatis日志输出
    log4j.logger.org.mybatis=INFO,ibatis
    log4j.logger.com.software.dao=INFO,ibatis
    log4j.additivity.org.mybatis=false
    log4j.appender.ibatis=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.ibatis.File=../logs/shuichan/ibatis/ibatis.log
    log4j.appender.ibatis.layout=org.apache.log4j.PatternLayout
    log4j.appender.ibatis.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} method:%c%n%m%n
    
    #定义日志输出目的地为控制台
    log4j.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 = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%c%n%m%n
    
    #可以灵活地指定日志输出格式,下面一行是指定具体的格式
    #log4j.appender.Console.layout = org.apache.log4j.PatternLayout
    #log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
    
    #文件大小到达指定尺寸的时候产生一个新的文件
    log4j.appender.F = org.apache.log4j.RollingFileAppender
    #指定输出目录
    log4j.appender.F.File = ../logs/shuichan/logfile.log
    log4j.appender.F.Append = true
    #定义文件最大大小
    log4j.appender.F.MaxFileSize = 10MB
    # 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
    log4j.appender.F.Threshold = INFO
    log4j.appender.F.layout = org.apache.log4j.PatternLayout
    log4j.appender.F.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n
    
    ### 输出ERROR 级别以上的日志到=E://logs/error.log ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File = ../logs/shuichan/error.log 
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR 
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss,SSS}  [ %t:%r ] - [ %p ]  %c%m%n
  • 相关阅读:
    ABP PUT、DELETE请求错误405.0
    Visual Studio Code 通过 Chrome插件Type Script断点调试Angular 2
    Angular 报错 Can't bind to 'formGroup' since it isn't a known property of 'form'
    ABP 用swagger UI测试API报401无权限访问问题
    ABP .Net Core API和Angular前端APP集成部署
    ABP .Net Core API和Angular前端APP独立部署跨域问题(No Access-Control-Allow-Origin)
    Hosts文件实际应用 配置内部服务器提高访问效率和速度
    mysql-proxy实现读写分离
    mysql主从复制-linux版本
    nginx作反向代理,实现负载均衡
  • 原文地址:https://www.cnblogs.com/george93/p/7269298.html
Copyright © 2020-2023  润新知