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. 《DSP using MATLAB》Problem 5.38

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  2. hdu2461 Rectangles 线段树--扫描线

    You are developing a software for painting rectangles on the screen. The software supports drawing s ...

  3. 【BZOJ4521】【CQOI2016】手机号码

    感觉数位dp好恶心…… 原题: 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不 吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的 ...

  4. Linux内核Inotify机制学习笔记

    一.Inotify简介: Inotify是一种文件变化通知机制,Linux内核从2.6.13开始引入.它是一个内核用于通知用户空间程序文件系统变化的机制.开源社区提出用户态需要内核提供一些机制,以便用 ...

  5. day44 数据库学习 索引 引用自egon 老师博客

    MySQL索引管理 总结 #索引是存在硬盘中的, #索引的功能, 1.可以加速查询 2.但是他会降低写入和删除的速度 所以不能乱加索引 总结二 1 最左前缀匹配原则 2设置的索引,它的字段中的内容占空 ...

  6. Module Sources

    转自:https://www.terraform.io/docs/modules/sources.html 主要记录module source 的格式 The source argument in a ...

  7. maven 阿里云 国内镜像 中央仓库

    修改maven根目录下的conf文件夹中的setting.xml文件,具体内容和示意图如下: <mirror> <id>alimaven</id> <name ...

  8. 利用js获取客户端ip的方法

    1. 通过script标签引入url 比如如下代码: <script type="text/javascript" src="http://pv.sohu.com/ ...

  9. mysql show master status为空值

    问题 执行show master status,输出结果为空: mysql> show master status; Empty set (0.00 sec) 原因 mysql没有开启日志. 查 ...

  10. Linux patch命令详解

    Linux patch命令 Linux patch命令用于修补文件. patch指令让用户利用设置修补文件的方式,修改,更新原始文件.倘若一次仅修改一个文件,可直接在指令列中下达指令依序执行.如果配合 ...