• Log4j 入门总结



    一、Log4j介绍


    log4j是类似于java.util.logging的日志作用,即记录一些有用信息,是一个日志框架;

    log4j == log for Java

    日志框架的作用:

    (1)函数参数是否正确;

    (2)软件发布后,记录用户的每一步操作;

    (3)记录程序运行出错位置;

    log4j在http://logging.apache.org/log4j/1.2/download.html 中进行下载;

    log4j的api文档在log4j/site/apidocs/index.html中;

    log4j可以改变日志记录的形式比如HTML、Simple等;

    log4j可以改变日志输出的目的地,比如File、DB等;

    二、配置使用Log4j

    原本是一个zip包,取出jar包,并在Eclipse的某个Project build path导入;

    三、简单的使用Log4j

    log4j需要配置文件log4j.properties进行配置,log4j.properties位于src目录下;


    log4j.properties规则:

    (1)键值对;

    (2)#代表注释;

    (3)不支持中文;


    Log4jDemo.java


    package org.impl;
    
    import org.apache.log4j.Logger;
    
    public class Log4jDemo {
    	public static void main(String args[]){
    		Logger logger = Logger.getLogger(org.impl.Log4jDemo.class);
    		logger.debug("debug");
    		logger.info("info");
    		logger.error("error");
    	}
    }
    log4j.properties


    log4j.rootLogger=debug,appender1
    log4j.appender.appender1=org.apache.log4j.ConsoleAppender
    log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

    显示结果:

    [main] DEBUG org.impl.Log4jDemo - debug
    [main] INFO org.impl.Log4jDemo - info
    [main] ERROR org.impl.Log4jDemo - error


    这样一个简单的log4j应用。

    这个配置文件的意思是:

    rootLogger表示最低显示等级,即显示debug等级及以上的信息;

    appender1表示一个名字;

    ConsoleAppender表示输出到控制台,如果想要输出到文件,则可以使用FileAppender并制定文件名称;

    TTCCLayout是一种布局方式;

    debug等级表示在编译开发阶段的信息;

    error等级表示错误信息;

    info等级表示一般的信息;

    如果看到如下信息:

    log4j:WARN No appenders could be found for logger (org.impl.Log4jDemo).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    表示配置文件位置不正确,应该放到src目录下!


    四、逐步了解Log4j

    任务1:将日志输出到指定文件

    只需要修改配置文件即可,配置文件修改为:


    log4j.rootLogger=debug,appender1
    log4j.appender.appender1=org.apache.log4j.FileAppender
    log4j.appender.appender1.File=./java0.log
    log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

    这样就指定了日志输出到工程目录下的java0.log文件中;

    注意:这个日志文件时追加类型的。

    任务2:将日志输出以HTML格式输出(效果很好!)

    修改配置文件为:

    log4j.rootLogger=debug,appender1
    log4j.appender.appender1=org.apache.log4j.FileAppender
    log4j.appender.appender1.File=./java0.html
    log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout

    即可;

    任务3:同时输出到控制台和文件

    修改配置文件为:

    log4j.rootLogger=debug,appender1,appender2
    log4j.appender.appender1=org.apache.log4j.FileAppender
    log4j.appender.appender1.File=./log4j.HTML
    log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
    
    log4j.appender.appender2=org.apache.log4j.ConsoleAppender
    log4j.appender.appender2.layout=org.apache.log4j.SimpleLayout


    五、Log4j核心组件

    1.Logger

    设定了显示日志的级别;

    常用级别为debug,info,warn,error,fatal;

    2.Appender

    设定了日志的输出目的;

    常用有:

    (1)ConsoleAppender

    (2)FileAppender

    (3)DailyRollingFileAppender  一天换一个文件

    (4)JdbcAppender   输出到数据库
     

    3.Layout

    设定日志的内容格式;

    常用有:

    (1)HTMLLayout;

    (2)TTCCLayout;

    (3)PatternLayout;制定布局样式

    如果要设置PatternLayout,必须将配置文件修改为以下形式:


    log4j.rootLogger=debug,appender1,appender2
    log4j.appender.appender1=org.apache.log4j.FileAppender
    log4j.appender.appender1.File=./log4j.HTML
    log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout
    
    log4j.appender.appender2=org.apache.log4j.ConsoleAppender
    log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
    
    log4j.appender.appender2.layout.ConversionPattern= 格式名称


    格式形式如下:


    %p:日志优先级(debug、info)

    %t:输出日志的线程名;

    %d{yyyy-MM-dd HH:mm:ss}:时间;

    %c:所属类名;

    %r:日志输出所花时间;

    %n:换行;

    %l:日志所在行;

    %m:信息;

    %M:方法;

    比如:


    %r [%t] -%l %p %d{yyyy-MM-dd HH:mm:ss} %n

    显示如下:

    3 [main] -org.impl.Log4jDemo.main(Log4jDemo.java:10) ERROR 2012-01-11 17:11:37


    3表示所花时间;

    [main]表示线程;

    org.impl.Log4jDemo.main(Log4jDemo.java:10) 表示   %l   ;

    ERROR表示%p;


     


    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    Python pip 下载速度慢? Windows 设置 国内源,用阿里云国内镜像加速
    Go timer 是如何被调度的?
    Go sync.Pool 浅析
    一次错误使用 go-cache 导致出现的线上问题
    golang面向对象分析
    一文完全掌握 Go math/rand
    这一次,彻底搞懂 Go Cond
    面试题:让你捉摸不透的 Go reslice
    当 Go struct 遇上 Mutex
    这可能是最容易理解的 Go Mutex 源码剖析
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058101.html
Copyright © 2020-2023  润新知