软件开发——软技能(四、日志)

四、日志

    从事与软件相关工作的人,应该都听过“日志”一词。这已经成了记录程序运行、追踪问题、调试等的最佳途径。并且,各编程语言都形成了各自的日志体系和相应的框架(Java是有的,其它开发语言猜测也有,以下以Java日志讨论日志的问题,其它语言亦可参考)。

    在LZ所参与过的项目中,日志这个功能能提供的信息非常少。主要是开发人员对日志不重视,一则不了解能用来干什么或者知道能干什么但不知道能做到什么程度。二则不知道各日志框架的使用方法和配置方式,三则不知道什么地方该进行日志记录?进行什么级别的日志记录?日志该写些什么东西等。这些现象当然与所处公司或经历过的学习、培训等有关。公司对于项目开发没有一套完整的日志体系且不够重视,所以项目中的日志基本上都是各自发挥的状态。更有甚者,采用的是“System.out.println()”这种方式进行一些程序记录或调试,这不单是应届生有的现象,非应届生当中也有部分开发人员有此现象。

    在详细讨论日志之前,先来说说为什么不采用“System.out.println()”进行记录或调试的原因:

    1.不能知道该打印的发生时间;

    2.不能知道该打印的线程信息(名称、编号);

    3.不能知道该打印的具体地址(类名、调用方法名、行号);

    4.不能方便的控制该打印的开启或关闭;

    5.不能对该打印进行录入文件并配置文件的生成方式等。

    上面所提到的信息或用法,在程序记录、追踪问题、调试等,特别有用,而“System.out.println()”方式只是输出提供的信息。当然有人会说,我在需要打印的信息中,提供上述信息不就好了!那么LZ只想反问一句,做这么多已有的功能,你不嫌累?

    对于“System.out.println()”,这种输出方式,只适用于Java初学者,项目只适用于命令行调用运行的项目。其它情况下则应该坚决抛弃“System.out.println()”这种方式,采用日志。

   在Java日志中,需要关注的有以下几方面:

    1.日志的等级:(详细参考日志级别Java.util.log.Level)

    ERROR:系统发生了严重的错误,必须马上进行处理,否则系统将无法继续运行。

    WARN:系统能继续运行。但是必须引起关注。

    INFO:重要的业务逻辑处理完成。

    DEBUG:调试信息,主要给开发人员看。

    2.日志的配置

    日志文件存放位置:统一定点存放,方便查阅。

    日志文件生成规则:以小时/天/周/月为单位生成日志文件。

    日志信息的格式:日志的发生时间、线程名称、等级、发生位置等信息的格式。

    日志文件的大小限制:为了在查阅日志时能快速加载日志文件,可以对日志文件大小进行限制。

    日志文件的记录的日志类型:根据业务或管理需要,可以将不同的业务的日志或不同等级的日志写入到不同的日志文件中。

    3.何时需要进行日志记录:(主要是根据日志的等级来进行日志记录)

    系统或业务出错,业务受阻但不致命

    单个业务的完成,或操作记录;

    请求参数/调用参数,执行/查询结果等。

    总之,日志的目的是为了记录项目的运行情况,主要包括业务记录、错误信息等。在项目出错时,通过日志能快速找到出问题的地方和问题产生的原因,则表明该日志达到了其应有的目的。

    4.Java日志框架:

    SLF4J提供统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统(Log4J,Logback,commons-logging等)的配置来实现,可以在应用中灵活切换日志系统。

    Log4J一款基于Java的开源日志组件,功能非常强大,可以将日志信息输出到控制台、文件、用户界面,也可以输出到操作系统的事件记录器和一些系统常驻进程。也是最受欢迎的Java日志组件。

   

    另:说起日志,不得不提IntellJ IDEA的一个插件Grep Console,这个插件可以将在IntellJ IDEA中运行的应用程序产生的日志进行查找标记,对于在Java程序开发过程中,查看调试、运行信息非常有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值