7.5.1基本日志
全局日志记录器
Logger.getGlobal().info("File -> OPen menu item selected");
在适当的地方(如main开始)调用
import java.util.logging.Logger; Logger.getGlobal().setLevel(Level.OFF);
7.5.2高级日志
创建或获取记录器:
private static final myLogger = Logger.getLogger("com.whaleson.test");
日志记录级别:
- SEVERE
- WARNING
- INFO 默认是这个级别
- CONFIG
- FINE
- FINER
- FINSET
默认情况下只记录前三个级别。
可以使用LEVEL.ALL开启所有级别的记录。
LEVEL.OFF关闭所有级别的记录。
日志的记录方法
- logger.info(message);
指定级别
- logger.info(LEVEL.FINE,message) ;
调用logp方法获得调用类和方法的确切位置,这个方法的签名为:
void logp(Level l,String className,String methodName,String message);
跟踪执行流的方法
void entering(String className,String methodName);
7.5.3修改日志管理器配置
修改日志系统的各种属性:
jre/lib/logging.properties
要想使用另外一个配置文件:
java.util.logging.config.file
并使用下面的命令启动程序:
java -Djava.util.logging.config.file=configFile MainClass
日志管理器在VM启动过程中初始化,这在main执行之前完成,如果在main中调用System.setProperty(“java.util.logging.config.file”,file),也会调用LogManager.readConfiguration()来重新初始化日志管理器。
7.5.4本地化
//在请求日志记录器时,可以指定一个资源包: Logger logger = Logger.getLogger(loggerName,"com.wahleson.logmessage");
7.5.5处理器
在默认情况下,日志处理器将记录发送到ConsoleHandler中,并由它输出到System.err流中。
要想记录FINE级别的日志,就必须修改配置文件中的默认日志记录级别和处理器级别。可以绕过配置文件,安装自己的处理器。
Logger logger = Logger.getLogger("com.whaleson.App"); logger.setLevel(Level.FINE); //默认情况下,日志记录器将记录发送到自己的处理器和父处理器。如果不设置为false,将会有两次记录。 logger.setUseParentHandlers(false); Handler handler = new ConsoleHandler(); handler.setLevel(Level.FINE); logger.addHandler(handler); ``
将日志输出到其它地方,就需要添加其它处理器:
- FileHandler 收集记录到文件中。
- SocketHandler 发送到特定的主机和端口。
如果希望编写更复杂的流处理器,就应该扩展handler类,并自定义publish、finish和close方法。