zoukankan      html  css  js  c++  java
  • Log4j appender、layout

    appender输出类型配置

    layout日志信息格式

    Threshold属性指定输出等级

    Append属性指定是否追加内容

    (1)appender输出类型配置

    Log4j官方的appender给出了一下几种实现 

    org.apache.log4j.ConsoleAppender(控制台),  
    
    org.apache.log4j.FileAppender(文件),  
    
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),  
    
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),  
    
    

      

    总结:

    假如日志数据量不是很大,我们可以用DailyRollingFileAppender 每天产生一个日志,方便查看;

    假如日志数据量很大,我们一般用RollingFileAppender,固定尺寸的日志,假如超过了 就产生一个新的文件;

    我开来看配置文件,日志代码一般复制就可以了。

      

    log4j.rootLogger=ERROR, Console ,File ,DailyRollingFile
       
    #Console  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
       
    #File
    log4j.appender.File = org.apache.log4j.FileAppender
    log4j.appender.File.File = d://log2.log
    log4j.appender.File.layout = org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
    
    #DailyRollingFile
    log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.DailyRollingFile.File = d://log3.log
    log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout
    log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
    

      

    这里有两个新的配置项解释下:

    MaxFileSize 是日志文件的最大尺寸;根据实际需求来定 10KB 100KB也行

    MaxBackupIndex是日志文件的个数,假如超过了,则覆盖,主要考虑到的是硬盘的容量问题;根据实际需求来定 比如 100  500;

    我们来看测试代码。

    package com.zhi.log4j2;
    
    import org.apache.log4j.Logger;
    
    public class Demo {
    	private static Logger logger=Logger.getLogger(Demo.class); // 获取logger实例
    	public static void main(String[] args) {
    		logger.debug("调试debug信息"); //1
    		logger.info("普通Info信息"); //2
    		logger.warn("警告warn信息"); //3
    		logger.error("错误error信息"); //4
    
            //开发中有可能会遇到一下经典异常
            logger.error("错误了",new IllegalArgumentException("非法参数异常"));
    	}
    }
    

      这个时候通过改变系统时间,我们可以看到日志文件log3每天产生一个。

    再来看到达指定尺寸大小产生一个日志文件,我们测试1KB

    log4j.rootLogger=Warn, Console ,File ,RollingFile
       
    #Console  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
       
    #File
    log4j.appender.File = org.apache.log4j.FileAppender
    log4j.appender.File.File = d://log4j//log2.log
    log4j.appender.File.layout = org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
    
    #RollingFile
    log4j.appender.RollingFile = org.apache.log4j.RollingFileAppender
    log4j.appender.RollingFile.File = d://log4j//log4.log
    log4j.appender.RollingFile.MaxFileSize=1KB
    log4j.appender.RollingFile.MaxBackupIndex=3
    log4j.appender.RollingFile.layout = org.apache.log4j.PatternLayout
    log4j.appender.RollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
    

      

    package com.zhi.log4j2;
    
    import org.apache.log4j.Logger;
    
    public class Demo {
    	private static Logger logger=Logger.getLogger(Demo.class); // 获取logger实例
    	public static void main(String[] args) {
    
            for(int i=0;i<10000;i++){
            	logger.warn(" RollingFile 调试debug信息");
            	logger.warn(" RollingFile 调试debug信息");
            }
    	}
    }
    

      

    超过1KB产生一个文件,运行如图:

      

     (2)layout日志信息格式

    Log4j提供的layout有以下几种

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

     html格式布局

    配置

    log4j.rootLogger=Warn, Console
       
    #Console  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.HTMLLayout  
    

      

    代码 

    package com.zhi.log4j2;
    
    import org.apache.log4j.Logger;
    
    public class Demo {
    	private static Logger logger=Logger.getLogger(Demo.class); // 获取logger实例
    	public static void main(String[] args) {
    		logger.debug("调试debug信息"); //1
    		logger.info("普通Info信息"); //2
    		logger.warn("警告warn信息"); //3
    		logger.error("错误error信息"); //4
    
            //开发中有可能会遇到一下经典异常
            logger.error("错误了",new IllegalArgumentException("非法参数异常"));
    	}
    }
    

      

    标准的html table表格格式,显示信息包括 线程 等级 类 报错信息;

      SimpleLayout简单布局

    log4j.rootLogger=Warn, Console
       
    #Console  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.SimpleLayout  
    

      

    package com.zhi.log4j2;
    
    import org.apache.log4j.Logger;
    
    public class Demo {
    	private static Logger logger=Logger.getLogger(Demo.class); // 获取logger实例
    	public static void main(String[] args) {
    		logger.debug("调试debug信息"); //1
    		logger.info("普通Info信息"); //2
    		logger.warn("警告warn信息"); //3
    		logger.error("错误error信息"); //4
    
            //开发中有可能会遇到一下经典异常
            logger.error("错误了",new IllegalArgumentException("非法参数异常"));
    	}
    }
    

      

      TTCCLayout布局

    log4j.rootLogger=Warn, Console
       
    #Console  
    log4j.appender.Console=org.apache.log4j.ConsoleAppender  
    log4j.appender.Console.layout=org.apache.log4j.TTCCLayout  
    

      

    package com.zhi.log4j2;
    
    import org.apache.log4j.Logger;
    
    public class Demo {
    	private static Logger logger=Logger.getLogger(Demo.class); // 获取logger实例
    	public static void main(String[] args) {
    		logger.debug("调试debug信息"); //1
    		logger.info("普通Info信息"); //2
    		logger.warn("警告warn信息"); //3
    		logger.error("错误error信息"); //4
    
            //开发中有可能会遇到一下经典异常
            logger.error("错误了",new IllegalArgumentException("非法参数异常"));
    	}
    }
    

      

      PatternLayout布局是我们以后推荐使用的,很灵活;

    有个ConversionPattern属性,灵活配置输出属性:

    %m 输出代码中指定的消息;

    %M 输出打印该条日志的方法名;

    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL;

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

    %c 输出所属的类目,通常就是所在类的全名;

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

    %n 输出一个回车换行符,Windows平台为"rn”,Unix平台为"n”;

    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},输出类似:2002-10-18 22:10:28,921;

    %l 输出日志事件的发生位置,及在代码中的行数;

  • 相关阅读:
    百度地图生成器添加标注不显示
    为web文件夹添加IIS应用程序池用户权限
    SSL证书 .pem转.pfx
    sql获取表的所有字段及属性
    sql server不用安装sql管理工具开启sa
    asp.net mvc+webuploader大文件分片上传
    将WinForm程序(含多个非托管Dll)合并成一个exe的方法
    手机访问网站自动跳转到手机版
    c++和cuda混合编程 实现传统神经网络
    leetcode 338
  • 原文地址:https://www.cnblogs.com/mengxinrenyu/p/7707962.html
Copyright © 2011-2022 走看看