`

Log4详解(转)

    博客分类:
  • Java
阅读更多

1.1相关英文详解
 log:日志  debug:调试 error:错误 warn:警告, 提醒 info:消息
1.2 什么是log4j?为什么要有log4j?
 log4j定义:log4j是一个流行、优秀的日志记录工具,它能够以各种灵活的方法输出日志信息;
 为什么要用log4j:在程序发生错误时,我们希望可以以文件的形式保存这此异常信息,以便日后查看处理优化程序,
 就可以用到日志记录,现流行最优秀的一款:log4j,它是开源的,且方便易用;
1.3如何使用log4j记录程序发后的异常日志信息?
    (1). 下载log4j的jar包.    log4j-1.2.15.jar
    (2). 请将jar包粘贴到工程中.
    (3). 导入jar包:工程名,右键--properties--java build path--libraries--add jars……
         第二步可以不执行,在第三步中工程名,右键--properties--java build path--libraries--add External jars……即可
    区别:add jars……是添加工程内jar包,add External jars……则不限制于包内,用于jar包未放置于工程内;
    建议执行第二步,实现工程、jar包一体化,避免出现未知的异常
    (4). 新建一个log4j.properties:src--右键--new--file--命名log4j.properties
    (5). 配置log4j.properties:
   ### 设置优先级别、以及输出源 stdout输出到控制台,file保存到文件###
   log4j.rootLogger=debug, stdout, file

   ### 把日志信息输出到控制台 ###
   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=%d{yyyy-MM-dd HH:mm:ss} %l %m%n


   ### 把日志信息输出到文件:accp.log ###
   log4j.appender.file=org.apache.log4j.FileAppender
   log4j.appender.file.File=accp.log
   log4j.appender.file.layout=org.apache.log4j.PatternLayout
   log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}  %l  %m%n
    (6).详解配置:
   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=%d{yyyy-MM-dd HH:mm:ss} %l %m%n
   布局方式:布局方式:yyyy-年mm-月dd-天hh-小时mm-分钟ss-秒钟 %l:具体异常代码行数%m:异常信息%n:信息换行
    (7)优先级:  
        优先级从高到低分别是ERROR、WARN、INFO、DEBUG
    (8).总结:
     a:配置文件中不能包含中文(注释中文也不可),因为配置文件保存标准为:"ISO-8859-1";
     b:log4j.rootLogger=debug, stdout, file中的debug可替换为ERROR、WARN、INFO、DEBUG 
     c:根据需求设置级别,如设置为debug,则会忽略比它级别低的所有异常
     d:log4j.rootLogger=debug, stdout, file中的stdout, file可选其一

1.4实例说明:
 需求:需求:计算类(compute)要求用户输入二个数执行相除并保存结果用异常类进行处理和使用log4j记录异常信息
代码实现:
package com.t97.compute;

import java.util.InputMismatchException;
import java.util.Scanner;
import org.apache.log4j.Logger;//导入log4j包

public class Compute {
 // 声明数组
 private int[] num = new int[2];

 // 封装属性
 public int[] getNum() {
  return num;
 }

 public void setNum(int[] num) {
  this.num = num;
 }

 
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);
  Compute compute = new Compute();
  Logger log = Logger.getLogger(Compute.class);
  int result = 0;
  int[] num = compute.getNum();
  String answer = null;
  try {
   System.out.println("请输入第一个数字:");
   num[0] = input.nextInt();
   System.out.println("请输入第二个数字:");
   num[1] = input.nextInt();
   result = num[0] / num[1];
   System.out.println("是否保存结果?(y/n)");
   answer = input.next();
   if (answer.equalsIgnoreCase("y")) {
    num[2] = result;// 试图将计算结果保存到数组中
   }
  } catch (InputMismatchException e) {
   System.out.println("用户输入数据类型错误!");
   log.debug("用户输入数据类型错误!");
  } catch (ArithmeticException ae) {
   System.out.println("发生算术错误!" + ae.getMessage());
   log.info("发生算术错误!" + ae.getMessage());
  } catch (ArrayIndexOutOfBoundsException aee) {
   System.out.println("数组发生越界!");
   log.warn(aee);
  } catch (Exception exception) {
   System.out.println("程序发生异常,给您带来不便,请重新启动!");
   log.error(exception);
  } finally {
   System.out.println(num[0] + "除以" + num[1] + "的计算结果为:" + result);
  }

 }
}

1.4.1日志分析:
预记录一:用户输入的不是数字时,InputMismatchException捕获到异常,结束程序,输出提示:用户输入数据类型错误!
log.debug("用户输入数据类型错误!"),记录错误信息:

  2009-09-28 11:36:23 com.t97.compute.Compute.main(Compute.java:46)  用户输入数据类型错误!
预记录二: 用户输入的第二个数即除数为0时,ArithmeticException捕获到异常,结束程序,输出提示:发生算术错误!/ by zero
 log.info("发生算术错误!" + ae.getMessage()),记录错误信息:

  2009-09-28 11:35:00 com.t97.compute.Compute.main(Compute.java:49) java.lang.ArithmeticException: / by zero
预 记录三:程序提示:"是否保存结果?(y/n)",如果输入"Y"后,ArrayIndexOutOfBoundsException捕获到异常,结束程 序,输出提示:数组发生越界因为数据长度为2,而程序试图"num[2] = result;// 试图将计算结果保存到数组中",发生越界!
          log.warn(aee), 记录错误信息:

  2009-09-28 11:37:41 com.t97.compute.Compute.main(Compute.java:52) java.lang.ArrayIndexOutOfBoundsException: 2
预记录四:未知错误,Exception超类捕获到异常,结束程序,输出提示"程序发生异常,给您带来不便,请重新启动!"
          log.error(exception),记录错误信息:(未知的……)

分享到:
评论

相关推荐

    log4详解详解详解详解

    Log4j 是一款广泛使用的日志记录框架,尤其在Java应用程序中非常常见。它提供了强大的功能,可以帮助开发者进行调试和分析应用的行为。Log4j 的核心组件包括 Logger、Appender 和 Layout,这些组件共同协作,使得...

    log4j详解(超详细)

    ### Log4j详解:日志记录的全面解析 #### 标题与描述解析: 标题“log4j详解(超详细)”与描述“log4j详解(超详细)”明确指出文章将对Log4j这一日志框架进行深入且详尽的介绍。Log4j作为一款流行的开源日志组件...

    log4j使用详解log4j使用详解

    ### Log4j 使用详解 #### 一、Log4j简介 Log4j 是 Apache 的一个开源项目,通过使用 Log4j,开发者能够控制日志信息的输出等级及去向,从而更加灵活地处理日志信息。它具有强大的功能,简单的配置,并且能够支持...

    log4net的配置详解

    **log4net配置详解** 在C#开发中,日志记录是不可或缺的一部分,它帮助开发者追踪程序运行状态、定位错误和异常,以及进行性能分析。log4net是Apache的一个开源项目,提供了一种灵活且可扩展的日志记录框架,广泛...

    log4net配置详解

    **log4net配置详解** log4net是一款广泛应用于.NET平台的日志记录框架,它提供了一套强大且灵活的机制,帮助开发者记录应用程序运行时的信息。本文将深入解析log4net的配置及其主要组件。 **一、log4net的组件结构...

    log4j入门、详解

    **日志框架Log4j详解** 日志框架在软件开发中扮演着至关重要的角色,它提供了记录应用程序运行过程中的各种事件的功能,便于调试、监控和问题排查。Log4j是Apache组织开发的一个开源的日志记录工具,广泛应用于Java...

    log4配置详解

    log4 配置详解 log4 是一个流行的 Java 日志记录系统,提供了灵活的配置选项来满足不同的日志记录需求。在本文中,我们将详细介绍 log4 的配置选项,并提供了大量的示例代码。 Log4j.properties 文件是 log4 的...

    Log4j详解,详细讲解log4j的使用,和原理

    Log4j 详解 Log4j 是一款功能强大的日志记录工具,广泛应用于 Java 应用程序中。它可以帮助开发人员调试和分析程序,记录程序的运行情况,并提供了灵活的配置方式来控制日志的输出。 Log4j 的概念 Log4j 中有三个...

    Log4j.properties配置详解

    ### Log4j.properties配置详解 #### 一、Log4j简介 Log4j是一个非常流行的Java日志框架,它能够帮助开发者轻松管理日志记录。Log4j的主要优点包括灵活性高、性能好以及易于配置。它由三个核心组件组成:记录器...

    Log4j详解与实战

    **Log4j详解与实战** Log4j是Java平台上的一个广泛应用的日志框架,由Apache软件基金会开发。它提供了一种灵活、强大的日志记录机制,使得开发者可以在应用程序中轻松地进行日志输出,便于调试、性能分析以及系统...

    log4j使用教程(详解)

    **日志框架Log4j详解** 在Java编程中,日志记录是不可或缺的一部分,它用于追踪应用程序的运行状态,帮助开发者在出现问题时定位错误、调试程序。Log4j是一款广泛使用的开源日志框架,由Apache软件基金会开发。本文...

    Log4.properties配置详解

    ### Log4j配置详解 #### 一、Log4j简介 Log4j 是一款非常流行的 Java 日志框架,由 Apache 软件基金会所提供。它能够帮助开发者在应用程序中记录日志信息,使得应用程序能够在运行时更加透明地展示其内部状态。Log...

    log4j详解.pdf

    ### Log4j详解 #### 1. Log4j简介 Log4j是Apache下的一个开源项目,用于实现灵活的日志管理。它可以帮助开发者控制日志信息的输出目的地、格式以及生成过程,这一切都可以通过简单的配置文件来实现,而无需修改...

    Log4j 入门到详解[推荐].pdf

    ### Log4j从入门到详解知识点汇总 #### 1. Log4j简介 Log4j是Apache的一个开源项目,主要用于实现日志记录功能。通过使用Log4j,开发者可以非常方便地控制日志信息的输出目的地(如控制台、文件等)、每条日志的...

    log4j详解与实战

    ### Log4j详解与实战 #### 一、Log4j简介 Log4j是一个开源的日志框架,由Apache Software Foundation开发。它允许开发者根据等级记录日志信息,并且能够自由控制日志信息输出的目的地(例如:控制台、文件等)。Log...

    log4j.properties配置详解

    ### Log4j.properties配置详解 #### 一、Log4j配置文件基本概念 Log4j是一种广泛应用于Java应用程序的日志框架,它可以帮助开发者轻松管理应用程序的日志记录过程。Log4j支持多种配置方式,其中.properties文件...

Global site tag (gtag.js) - Google Analytics