日志的出现是为了弥补使用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
, 正确的使用案例如下:
程序输出如下:
三月 05, 2017 10:24:49 上午 com.github.congyh.log.LoggerExample main配置: 使用按名创建的logger输出CONFIG级别的信息新闻热点
疑难解答