Logger.addHandler() 方法将Appender添加到Logger中。例如,下面的代码添加了一个新的ConsoleHandler,它会将日志输
出到控制台:
logger.addHandler(new ConsoleHandler());
一种更常用的添加Appender的方式是使用配置文件。如果使用 java.util.logging,Appenders会定义一个以逗号隔开的列表,
下面的示例将日志事件输出到控制台和文件:
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler
如果使用基于XML的配置文件,Appenders会被添加到<Appenders>元素下面,如果使用Log4j,我们可以很容易地添加一个
新ConsoleAppender来将日志消息发送到System.out:
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="[%p] %t: %m%n" />
</Console>
Appenders类型
这一节描述了一些更通用的Appenders,以及它们在各种日志框架中是如何实现的。
ConsoleAppender
ConsoleAppender是最常用的Appenders之一,它只是将日志消息显示到控制台上。许多日志框架都将其作为默认的
Appender,并且在基本的配置中进行预配置。例如,在Log4j中ConsoleAppender的配置参数如下所示。
一个完整的Log4j2的配置文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp">
<Appenders>
<Console name="MyAppender" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="MyAppender"/>
</Root>
</Loggers>
</Configuration>
这个配置文件创建了一个名为MyAppender的ConsoleAppender,它使用PatternLayout来对日志事件进行格式化,然后再将其
输出到System.out。<Loggers>元素对定义在程序代码中的Loggers进行了配置。在这里,我们只配置了一个LoggerConfig,
即名为Root的Logger,它会接收哪些日志级别在ERROR以上的日志消息。如果我们使用logger.error()来记录一个消息,那么
它就会出现在控制台上,就像这样:
An unexpected error occurred.
你也可以使用Logback实现完全一样的效果: