java 日志基础知识_Java8基础知识(八)记录日志

记录日志

可以用记录日志代替System.out.println方法来进行调试。记录日志的优点如下:

可以根据级别取消日志。

可以禁止日志记录输出。

可以将日志记录定向到不同处理器。

可以对记录进行过滤。

可以采用不同的方式格式化日志记录。

可以使用多个日志记录器。

可以通过修改配置文件来设置日志记录。

基本日志

最简单的日志,可以使用全局日志记录器global logger调用info方法来生成。

Looger.getGlobal().info("File->Open menu item selected");

调用setLevel方法可以控制显示日志的级别。

// 取消所有的日志

Logger.getGlobal().serLevel(Level.OFF);

高级日志

当开发大型的应用程序时,需要使用多个日志记录器,调用getLogger方法创建或获取记录器。

// 用静态变量存储日志记录器的引用,防止其被垃圾回收

private static final Logger myLogger = Logger.getLogger("com.mycompany.myapp");

日志记录分为七个等级(依次降低),默认只记录前三个级别:

SERVERE

WARNING

INFO

CONFIG

FINE

FINER

FINEST

默认的日志记录包含日志调用的类名和方法名。若虚拟机对执行过程进行了优化,就得不到准确的调用信息。此时可以调用logp方法获得调用类和方法的确切位置。方法签名如下:

void logp(Level l, String className, String methodName, String message)

还可以调用entering和exiting来跟踪执行流:

int read(String file, String pattern) {

logger.entering("com.mycompany.mylib.Reader", "read",

new Object[] {file, pattern});

// ...

logger.exiting("com.mycompany.mylib.Reader", "read", count);

return count;

}

这些调用将生成FINER级别和以字符串ENTRY和RETURN开始的日志记录。

可以使用throwing方法和log方法来提供日志记录中包含的异常描述内容,来记录不可预料的异常。

// 典型用法

if (condition) {

IOException exception = new IOException("message");

// throwing可以记录一条FINER级别的记录和一条以THROW开始的信息

logger.throwing("com.mycompany.mylib,Reader", "read", exception);

throw exception;

}

// try块用法

try {

// ...

}catch (IOException e) {

Logger.getlogger("com.mycompany.myapp").log(Level.WARNING, "Reading image", e);

}

修改日志管理器配置

配置文件存在于jre\lib\logging.properties。

若要使用另一个配置文件,就要将java.util.logging.config.file特性设置为配置文件的存储位置,并用命令java -Djava.util.logging.config.file=configFile MainClass来启动程序。

可以通过修改配置文件中日志记录器的.level来修改默认的日志记录级别,同时要修改处理器的.level。

处理器

默认情况下,日志记录器将记录发送到ConsoleHandler中,并由其输出到System.err流中。

与日志记录器对应,处理器也有日志记录级别。一个日志记录的级别必须高于其记录器和处理器的阈值。

过滤器

默认情况下,过滤器根据日志记录的级别进行过滤,每个日志记录器的和处理器都可以有一个可选的过滤器来完成附加的过滤,使用setFilter方法即可。还可以通过实现Filter接口自定义过滤器。

boolean isLoggable(LogRecord record)

格式化器

使用ConsoleHandler和FileHandler可以生成文本和XML格式的日志记录,也可以扩展Formatter类覆盖format方法来自定义格式,通常会使用到以下方法:

// 对部分消息进行格式化、参数替换和本地化应用操作

String formatMessage(LogRecord record)

// 添加头部和尾部

String getHead(Handler h)

String getTail(Handler h)

// 最后调用setFormatter将格式化器安装到处理器中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值