zoukankan      html  css  js  c++  java
  • Java——Log4j与Log4j2

    完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需要向控制台或文件等位置输出大量信息。这些信息的输出,在很多时候是System.out.println()无法完成日志信息根据用途与记录内容的不同,分为调试日志、运行日志、异常日志等。用于日志记录的技术很多,如 jdk 的 logger 技术,apache 的 log4j、log4j2 技术等。Log4j 的全称为 Log for java,即,专门用于 java 语言的日志记录工具。其目前有两个版本:Log4j 与 Log4j2。

    下载地址 : http://download.csdn.net/download/zedtorpex/10267173


      日志级别
      为了方便对于日志信息的输出显示,对日志内容进行了分级管理。日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)。为什么要对日志进行分级呢?无论是将日志输出到控制台,还是文件,其输出都会降低程序的运行效率。但由于调试、运行维护的需要,客户的要求等原因,需要进行必要的日志输出。这时就必须要在代码中加入日志输出语句。这些输出语句若在程序运行时全部执行,则势必会降低运行效率。例如,使用System.out.println()将信息输出到控制台,则所有的该输出语句均将执行。会大大降低程序的执行效率。而要使其不输出,唯一的办法就是将这些输出语句逐个全部删除。这是个费时费力的过程。将日志信息进行分级管理,便可方便的控制信息输出内容及输出位置:哪些信息需要输出,哪些信息不需要输出,只需在一个日志输出控制文件中稍加修改即可。而代码中的输出语句不用做任何修改。从这个角度来说,代码中的日志编写,其实就是写大量的输出语句。只不过,这些输出语句比较特殊,它们具有级别,在程序运行期间不一定被执行。它们的执行是由另一个控制文件控制。

      日志输出控制文件

       Log4j 的日志输出控制文件,主要由三个部分构成:

      (1)日志信息的输出位置:控制日志信息将要输出的位置,是控制台还是文件等。

      (2)日志信息的输出格式:控制日志信息的显示格式,即以怎样的字符串形式显示。

      (3)日志信息的输出级别:控制日志信息的显示内容,即显示哪些级别的日志信息。有了日志输出控制文件,代码中只要设置好日志信息内容及其级别即可,通过控制文件便可控制这些日志信息的输出了。

     Log4 j 使用基础

      导入Jar包,分别有Log4j 与Log4j2 两种.

      Log4j  :

          

      Log4j 2 : 

          

        日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)

      Log4j 代码:

        

            log4j.properties配置文件

     1 ##define an appender named console
     2 log4j.appender.console=org.apache.log4j.ConsoleAppender
     3 #The Target value is System.out or System.err
     4 log4j.appender.console.Target=System.err
     5 #set the layout type of the apperder
     6 log4j.appender.console.layout=org.apache.log4j.PatternLayout
     7 #set the layout format pattern
     8 log4j.appender.console.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n
     9 
    10 
    11 ##define an appender named file
    12 log4j.appender.file=org.apache.log4j.FileAppender
    13 #define the file path and name
    14 log4j.appender.file.File=/home/wber/log.txt
    15 #set the layout type of the apperder
    16 log4j.appender.file.layout=org.apache.log4j.PatternLayout
    17 #set the layout format pattern
    18 log4j.appender.file.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n
    19 
    20 
    21 ##define an appender named rollfile
    22 log4j.appender.rollfile=org.apache.log4j.RollingFileAppender
    23 #define the file path and name
    24 log4j.appender.rollfile.File=d:/logrollfile.txt
    25 #set the log's size
    26 log4j.appender.rollfile.MaxFileSize=10KB
    27 #set the layout type of the apperder
    28 log4j.appender.rollfile.layout=org.apache.log4j.PatternLayout
    29 #set the layout format pattern
    30 log4j.appender.rollfile.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n
    31 
    32 
    33 ##define a logger
    34 log4j.rootLogger=debug,console,file,rollfile 
      !!! log4j.appender.file.File=/home/wber/log.txt为输出日志文件路径
     1 package com.log.myDemo;
     2 
     3 import org.apache.log4j.Logger;
     4 
     5 public class LogDemo {
     6     public static void main(String []args){
     7         Logger logger = Logger.getLogger(LogDemo.class) ;
     8         //日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)
     9         logger.fatal("fatal msg");
    10         logger.error("error msg");
    11         logger.warn("warn msg");
    12         logger.info("info msg");
    13         logger.debug("debug msg");
    14         logger.trace("trace msg");
    15     }
    16     
    17 }

      Log4j 代码:

        配置文件为log4j2.xml  

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 
     3 <configuration status="OFF">
     4     <appenders>
     5         <Console name="myConsole" target="SYSTEM_OUT">
     6             <PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss}] [%c %L] %m%n" />
     7         </Console>
     8         <File name="myLogFile" fileName="log/test.log" append="true">
     9             <PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss}] [%c %L] %m%n"/>
    10         </File>
    11         <RollingFile name="myRollingFile" fileName="logs/app.log"
    12                      filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
    13             <PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss}] [%c %L] %m%n"/>
    14             <SizeBasedTriggeringPolicy size="1KB"/>
    15         </RollingFile>
    16     </appenders>
    17     
    18     <loggers>
    19         <!-- 
    20         <logger name="全限定类名或接口名" level="info">
    21             <appender-ref ref="myConsole" />
    22         </logger>
    23          -->
    24         <root level="trace">
    25             <appender-ref ref="myConsole" />
    26             <!-- <appender-ref ref="myLogFile" />
    27             <appender-ref ref="myRollingFile" /> -->
    28         </root>
    29     </loggers>
    30     
    31 </configuration>

      main方法改为:

     1     public static void main(String []args){
     2         Logger logger = LogManager.getLogger(LogDemo.class) ;
     3         //日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)
     4         logger.fatal("fatal  msg");
     5         logger.error("error msg");
     6         logger.warn("warn msg");
     7         logger.info("info msg");
     8         logger.debug("debug msg");
     9         logger.trace("trace msg");
    10     } 

      

  • 相关阅读:
    android 项目学习随笔十五(ShareSDK开放平台)
    android 项目学习随笔十四(WebView)
    android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)
    android 项目学习随笔十二(ListView加脚布局)
    android 项目学习随笔十一(ListView下拉刷新提示)
    android 项目学习随笔十(自定义ProgressBar)
    android 项目学习随笔九(ListView加头布局)
    android 项目学习随笔八(xUtils的BitmapUtils模块)
    android 项目学习随笔七(ViewPagerIndicator与ViewPager)
    android 项目学习随笔六(网络缓存)
  • 原文地址:https://www.cnblogs.com/LexMoon/p/JavaLog4j.html
Copyright © 2011-2022 走看看