Java
来源:互联网 发布:图片处理器软件 编辑:程序博客网 时间:2024/06/17 12:29
日志的出现是为了弥补使用System.out.println()
进行调试的不足. 因为打印语句需要我们一条一条手动控制.
日志的管理分为两大部分:
- 日志记录器
- 日志处理器
日志记录器负责按设定级别对日志进行记录和向上传递, 日志处理器负责按设定级别对日志进行打印.
日志记录器
使用全局日志记录器
最简单的使用情况是通过调用Logger.getGlobal()
获得全局日志记录器. 然后通过info()
这样的方法来按级别输出日志.
可以通过Logger.global.setLevel(Level.OFF)
设置日志级别. 现在设置的是OFF, 则所有的日志信息都不会输出.
注意 日志输出语句只要存在, 无论是否最终进行了输出, 其消息体就会创建, 如果担心消息创建的代价, 可以使用lambda表达式代替. 详见 Jav8 - 通过lambd表达式进行计算 一文.
按名创建日志记录器
如果你想对每个类创建分离的日志记录器, 可以使用以下语句:
Logger logger = Logger.getLogger(LoggerExample.class.getName());
注意 日志记录器是有层级的, 也就是说如果你有一个日志记录器名为com.congyh
, 如果你关闭了com
日志记录器的日志输出, 那么com.congyh
也不会进行日志输出.
日志级别
日志共有七种级别: SEVERE
, WARNING
, INFO
, CONFIG
, FINE
, FINER
, FINEST
.
默认情况下, 会输出INFO
及以上级别的日志, 可以通过使用Level.ALL
来开启所有级别的日志, 也可以按日志级别进行控制.
你应该使用
CONFIG
及以下级别的日志来输出debug信息.
日志处理器
日志处理器按照输出的形式分为三种: ConsoleHandler
, FileHandler
, SocketHandler
.
默认的日志处理器工作在INFO
级别, 如果不对其进行修改, 即使日志记录器设置在例如CONFIG
级别, 那么日志实际上是只记录不输出. 假设我们现在有一个类叫做LoggerExample
, 正确的使用案例如下:
// 按名创建日志记录器Logger logger = Logger.getLogger(LoggerExample.class.getName());logger.setLevel(Level.CONFIG);ConsoleHandler consoleHandler = new ConsoleHandler();consoleHandler.setLevel(Level.CONFIG);logger.addHandler(consoleHandler);logger.config("使用按名创建的logger输出CONFIG级别的信息");
程序输出如下:
三月 05, 2017 10:24:49 上午 com.github.congyh.log.LoggerExample main配置: 使用按名创建的logger输出CONFIG级别的信息
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java
- java
- java
- java
- JAVA?
- java
- JS基础--输入框获取焦点
- windows下安装gensim
- asp.net 页面设计
- JavaWeb从入门到精通(七)-MySQL
- canvas学习笔记-1(基础篇)
- Java
- 禁止ViewPager滑动&禁止Fragment滑动&单独写一个类&布局文件换成NoScrollViewPager
- 配置tomcat同时支持http和https协议
- 读彬彬有礼压缩感知相关论文笔记3——沙威程序解读
- 城域网BRAS之PPPOE
- VB 中添加进度条
- Eclipse项目导入到Android studio遇到的坑
- 关于J2EE,J2SE,J2ME
- swift函数的参数标签和参数名称