Java Review(三十三、异常处理----补充:断言、日志、调试

要生成简单的日志记录,可以使用全局日志记录器(global logger) 并调用其 info 方法:

Logger.getClobal 0,info(“File->Open menu item selected”);

在默认情况下,这条记录将会显示以下内容:

May 10, 2013 10:12:15 PM LogginglmageViewer fileOpen

INFO: File->0pen menu item selected

但是, 如果在适当的地方(如 main 开始)调用

Logger.getClobal ().setLevel (Level .OFF);

将会取消所有的日志。

API:java.util.logging

高级曰志


从前面已经看到“ 虚拟日志”,下面继续看一下企业级( industrial-strength) 日志。在一个专业的应用程序中,不要将所有的日志都记录到一个全局日志记录器中,而是可以自定义日志记录器。

可以调用 getLogger 方法创建或获取记录器:

private static final Logger myLogger = Logger.getLogger(“com.mycompany.myapp”):

与包名类似,日志记录器名也具有层次结构。事实上, 与包名相比,日志记录器的层次性更强。 对于包来说,一个包的名字与其父包的名字之间没有语义关系,但是日志记录器的父与子之间将共享某些属性。例如, 如果对 com.mycompany 日志记录器设置了日志级别,它的子记录器也会继承这个级别 。

通常, 有以下 7 个日志记录器级别:

  • SEVERE

  • WARNING

  • INFO

  • CONFIG

  • FINE

  • FINER

  • FINEST

在默认情况下,只记录前夂个级别。 也可以设置其他的级別。例如:

logger,setLevel (Level .FINE);

现在, FINE 和更高级别的记录都可以记录下来。

另外, 还可以使用 Level.ALL 开启所有级别的记录, 或者使用 Level.OFF 关闭所有级别的记录。

对于所有的级别有下面几种记录方法:

logger.warning(message):

logger,fine(message) ;

同时, 还可以使用 log 方法指定级别, 例如:

logger.log(Level .FINE, message);

日志记录说明


日志记录常用的操作:

  • 1 ) 为一个简单的应用程序, 选择一个日志记录器,并把日志记录器命名为与主应用程序包一样的名字,例如,com.mycompany.myprog。

可以通过调用下列方法得到日志记录器:

Logger logger = Logger.getLogger(“com.mycompany.myprog”);

为了方便,可以利用一些日志操作将下面的静态域添加到类中:

private static final Logger logger = Logger.getLogger(“com.mycompany.nyprog”):

  • 2 ) 默认的日志配置将级别等于或高于 INFO 级别的所有消息记录到控制台。用户可以覆盖默认的配置文件。但是正如前面所述,改变配置需要做相当多的工作。因此,最好在应用程序中安装一个更加适宜的默认配置。

下列代码确保将所有的消息记录到应用程序特定的文件中。可以将这段代码放置在应用程序的 main方法中。

if (System,getProperty(“java,util.logging.config.dass”) == null

&& System.getPropertyC’java.util.logging.config.file") == null) {

try

{

Logger.getLogger(“”).setLevel(Level.ALL);

final int L0C_R0TATI0N_C0UNT = 10;

Handler handler = new FileHandler('Wmyapp.log", 0, L0G_R0TATI0N_C0UNT):

Logger.getLogger(“”).addHandler(handler): }

catch (IOException e) {

logger.log(Level.SEVERE, “Can’t create log file handler”, e);

}

}

  • 3 ) 现在,可以记录自己想要的内容了。但需要注意:所有级别为 INFO、 WARNING 和SEVERE 的消息都将显示到控制台上。因此, 最好只将对程序用户有意义的消息设置为这几个级别。将程序员想要的日志记录,设定为 FINE 是一个很好的选择。

当调用 System.out.println 时, 实际上生成了下面的日志消息:

logger.fine(“File open dialog canceled”;

记录那些不可预料的异常也,例如:

try

{}

catch (SonreException e) {

logger,log(Level.FINE, “explanation”, e);

}

调试技巧

======================================================================

在Intellij IDEA中使用Debug

how2j.java:如何在Eclipse中调试Java程序

W3Cschool:jUnit教程

Spring Boot干货系列:(十二)Spring Boot使用单元测试

Java Review系列目录

⇐⇐Java Review(三十二、异常处理)   Java Review(三十四、JDBC)⇒⇒

参考:

【1】:《Java核心技术 卷一》

【2】:廖雪峰的官方网站:使用断言

【3】:廖雪峰的官方网站:使用JDK Logging
【4】:廖雪峰的官方网站:使用Commons Logging
【5】:廖雪峰的官方网站:使用Log4j
【6】:廖雪峰的官方网站:使用SLF4J和Logback
【7】:how2j.java: Log4j系列教材

最后

为什么我不完全主张自学?
平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。

除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。

我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。

应该学哪些技术才能达到企业的要求?(下图总结)

[外链图片转存中…(img-zoFZmMja-1714306818459)]

[外链图片转存中…(img-C1DZQF5V-1714306818462)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值