1.日志

  • 为了取代System.out.println()
  • 可以设置输出样式
  • 可以设置输出级别,禁止某些级别输出
  • 可以被重定向到文件
  • 可以按包名控制日志级别

2.JDK内置Logging

在java.util.logging,这个日志用的较少。

JDK Logging定义了7个日志级别:

  • SEVERE
  • WARNING
  • INFO 默认
  • CONFIG
  • FINE
  • FINER
  • FINEST

例子1

import java.util.logging.*;

public class Main {
public static void main(String[] args){
Logger logger = Logger.getGlobal();
logger.info("start ...");
logger.log(Level.WARNING,"warning:....");
logger.warning("start...");
}
}

例子2

public class Person {
String name;
public Person(String name){
if (name == null){
throw new IllegalArgumentException("name is null");
}
this.name = name;
}
public String hello(){
return "Hello, "+this.name;
}
}
import java.util.logging.*;
public class Main {
public static void main(String[] args){
Logger logger = Logger.getGlobal();
logger.info("create new person...");
Person p = new Person("小明");
System.out.println(p.hello());
try{
new Person(null);
}catch (Exception e){
logger.log(Level.WARNING,"create new person failed",e);
}
logger.info("end...");
}
}


例子3 控制不同级别日志的输入
logger.setLevel(Level.WARNING);
```#java
import java.util.logging.*;
public class Main {
public static void main(String[] args){
Logger logger = Logger.getGlobal();
logger.setLevel(Level.WARNING);
logger.info("create new person...");
Person p = new Person("小明");
System.out.println(p.hello());
try{
new Person(null);
}catch (Exception e){
logger.log(Level.WARNING,"create new person failed",e);
}
logger.info("end...");
}
}
```

# 3.JDK Logging的局限:
* JVM启动时读取配置文件并完成初始化
* JVM启动后无法修改配置
* 需要在JVM启动时传递参数:-Djava.util.logging.config.file=config-file-name

4.总结

  • 日志是为了代替System.out.println(),可以定义格式,重定向到文件等
  • 日志可以存档,便于追踪问题
  • 日志记录可以按级别分类,便于打开或关闭某些级别
  • 可以根据配置文件调整日志,无需修改代码
  • JDK提供了Logging:java.util.Logging

廖雪峰Java3异常处理-2断言和日志-2使用JDK Logging的更多相关文章

  1. 廖雪峰Java3异常处理-2断言和日志-3使用Commons Logging

    Commons Logging是Apache创建的日志模块: 可以挂接不同的日志系统 可以通过配置文件指定挂接的日志系统 自动搜索并使用Log4j 如果Log4j不存在,使用JDK Logging(J ...

  2. 廖雪峰Java3异常处理-2断言和日志-4使用Log4j

    1.Log4j Log4j是目前最流行的日志框架.有两个版本 1.x:Log4j 2.x:Log4j2 Log4j下载地址https://www.apache.org/dyn/closer.lua/l ...

  3. 廖雪峰Java3异常处理-2断言和日志-1使用断言

    1.断言 断言Assertion是一种程序调试方式 使用assert关键字 断言条件预期为true 如果断言失败,抛出AssertionError,停止程序 可选的断言消息,断言失败,就会抛出 pub ...

  4. 廖雪峰Java3异常处理-1错误处理-4自定义异常

    JDK已有的异常: RuntimeException * NullPointerException * IndexOutOfBoundsException * SecurityException * ...

  5. 廖雪峰Java3异常处理-1错误处理-3抛出异常

    1.异常的传播 当某个方法抛出异常时: 如果当前方法没有捕获,异常就被抛到上层调用方法 直到遇到某个try...catch被捕获 使用printStackTrace()打印处方法的调用栈 import ...

  6. 廖雪峰Java3异常处理-1错误处理-2捕获异常

    1捕获异常 1.1 finally语句保证有无错误都会执行 try{...}catch (){...}finally{...} 使用try...catch捕获异常 可能发生异常的语句放在try{... ...

  7. 廖雪峰Java3异常处理-1错误处理-1Java的异常

    1.计算机运行中的错误 在计算机程序运行的过程中,错误总会出现,不可避免的 用户输入错误 读写文件错误 网络错误.内存耗尽.无法连接打印机不可 String s = "abc"; ...

  8. python异常处理与断言以及日志模块

    python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...

  9. 廖雪峰Java-3流程控制-7for循环

    for循环 for循环使用计数器实现循环 for循环条件需要设置:计数器初始值:循环前检测条件:每次循环后如何更新计数器 计数器变量通常命名为i int[] ns = {1,4,9,16,25}; f ...

随机推荐

  1. python------模块定义、导入、优化 ------->Yaml, l模块

    一. yaml模块 用来做配置文件. 需要pip安装该包. 二. ConfigParser模块 用来生成和修改常见配置文件,在python3.x版本中更名为configparser. (什么是配置文件 ...

  2. Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法

    Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法: https://blog.csdn.net/mingjie1212/article/details/485250 ...

  3. debian 配置linuxptp 软件时间戳

    编程之路刚刚开始,错误难免,希望大家能够指出. ntp,ptp,ntp,ptp 本文只说软件时间戳 先上几个推荐的网址,可以更好的了解ptp: https://docs.fedoraproject.o ...

  4. Java 中各种空(""、\u0000、null)的区别?

  5. python查看及修改当前的工作路径

    在pycharm中使用jupyter的时候,有时候需要查看当前的工作路径,然后需要修改当前的路径. 获取当前工作目录 os.getcwd() #用以获取当前的工作目录 改变当前工作目录 os.chdi ...

  6. 深入理解计算机系统 (Randal E.Bryant / David O'Hallaron 著)

    第1章 计算机系统漫游 (已看) 1.1 信息就是位+上下文 1.2 程序被其他程序翻译成不同的格式 1.3 了解编译系统如何工作是大有益处的 1.4 处理器读并解释存储在内存中的指令 1.4.1 系 ...

  7. AssemblyVersion和AssemblyFileVersion的区别

    简而言之,AssemblyVersion: 是程序集的版本,.NET的CLR用,用于标识出该dll的版本信息,用于定义强名称的版本号: AssemblyFileVersion: 为编译器生成的文件加入 ...

  8. [c/c++]可变参数的使用

    一.可变参数简介 当一个函数需要传递未知个数的参数时,就需要用到可变参数, 比如常见的printf()函数,输出多个变量: printf("print para1:%d ,para2 :%d ...

  9. Jmeter实现接口自动化测试

    一.环境准备 1.Jdk1.7或以上: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133 ...

  10. 自动化测试神器 之 python unittest 断言

    自动化测试的最后一步需要判断结果是否正确,而正确设置断言可以帮助判断测试用例的执行结果,从而提高自动化测试的效率,python unittest  提供了一个比较完整的断言方法.unittest框架测 ...