程序员必会技能—— 使用日志

Posted 一言不合就撒娇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了程序员必会技能—— 使用日志相关的知识,希望对你有一定的参考价值。

目录

1、为什么要使用日志

 2、自定义日志打印

2.1、在程序中得到日志对象

 2.2、使用日志对象打印日志

 2.3、日志格式

3、日志的级别

3.1、日志级别的分类

3.2、日志级别的设置

4、持久化日志

 5、更简单的日志输出——lombok

5.1、如何在已经创建好的SpringBoot项目中添加依赖 

5.2、代码变化:

 5.3、lombok原理解释


1、为什么要使用日志

  • 能够发现和定位问题
  • 能够记录用户登录日志,便与分析用户是正常登录还是恶意破解用户
  • 能够记录系统的操作日志,方便数据恢复和定位操作人
  • 记录程序的执行时间,方便为以后优化程序提供数据支持

例如SpringBoot项目启动时,输出的控制台日志信息:


 2、自定义日志打印

步骤:

  • 在程序中得到日志对象
  • 使用日志对象的相关语法输出要打印的内容

2.1、在程序中得到日志对象

//1、得到日志对象
private static Logger logger = LoggerFactory.getLogger(ControllerTest.class);

 注:Logger对象是属于org.slf4j包下

因为SpringBoot中内置了日志框架slf4j,所以咱们直接在程序中调用slf4j来输出日志

怎么理解这个问题呢?

        也就是说,日志的实现是会有很多种方式,而开发者们掌握的技能可能并不统一,就会造成,每个程序员都是用不同的方式去实现日志,当一个程序员离职后,另一个程序员想要修改一些日志输出格式等之类的东西,就会很麻烦,所以日志的门面就在这里起作用了,成功做到了解耦,开发者就只需要负责调用对接slf4j,而不需要关注日志是如何实现的了

 2.2、使用日志对象打印日志

package com.example.demo;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:龙宝
 * Date:2023-03-13
 * Time:15:40
 */
@RestController
@RequestMapping("/test")
public class ControllerTest 
    //1、得到日志对象
    private static Logger logger = LoggerFactory.getLogger(ControllerTest.class);
    @RequestMapping("/hi")
    public String sayHi() 
        //写日志
        logger.trace("日志:trace");
        logger.debug("日志:debug");
        logger.info("日志:info");
        logger.warn("日志:warn");
        logger.error("日志:error");
        return "日志打印";
    


        将项目启动后,在url输入对应的地址,访问后,回到IDEA,就会看到自己定义的日志了~

        为了可以看清楚,咱可以把Spring Boot项目启动时打印的日志删除掉:

访问:

 

日志:

 

 2.3、日志格式

日志归属,也可能是缩写,如: 

前面两个缩写~ 

        有小伙伴可能看到,打印的日志并不全,明明写五个,只打印了3个,为什么?这里就会引出日志的级别啦~


3、日志的级别

3.1、日志级别的分类

  • trace:微量,少许,级别最低
  • debug:需要调试时候的关键信息打印
  • info:普通的打印信息(默认日志的级别)
  • warn:警告,不影响使用,但需要注意的问题
  • error:错误信息,级别较高的错误日志信息
  • fatal:致命的,因为代码异常导致程序退出执行的事件

日志级别的顺序:

越往上接收到的消息越少,如设置了warn就只能收到warn、error、fatal级别的日志了

3.2、日志级别的设置

日志级别配置在配置文件中配置:


logging:
  level:
    root: error

4、持久化日志

        为什么要持久化日志,因为上述的日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便后续出现问题追溯问题,将日志保存下来的过程就叫做持久化

        将日志保存下来,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后,SpringBoot就会将控制台的日志写到相应的目录或文件下了~

配置日志文件的保存路径:

logging:
  file:
    path: D:\\\\CCL\\\\rizhi

 配置文件的文件名:

logging:
  file:
    path: D:\\\\CCL\\\\rizhi\\\\spring0313.log

 重新启动代码,访问对应网页,然后去查看对应文件夹:

我这的重复是因为我刚才不小心,将页面刷新了好几遍 ~


 5、更简单的日志输出——lombok

每次创建一个新的类,需要的打印日志信息时,都需要:

//1、得到日志对象
    private static Logger logger = LoggerFactory.getLogger(xxxx.class);

稍显繁琐,因此使用lombok来更简单的输出:

  1. 添加lombok框架支持
  2. 使用@slf4j注解输出日志

5.1、如何在已经创建好的SpringBoot项目中添加依赖 

        如果,一开始创建项目时,没有添加lombok依赖,则需要添加lombok依赖,在已经创建好的SpringBoot项目中添加依赖,需要借助插件

 然后将页面跳转到pom.xml上,右击:

 

 

 

然后就可以啦~ 

5.2、代码变化:

 5.3、lombok原理解释

我们查看target目录【target为项目最终执行的代码】:

 没有对应的slf4j注释了,而变成了最原来的创建日志对象的操作~

ps:如果有同学没有target这个目录,如下操作:

 把这个勾上即可~

好啦,本期到这里就结束咯~下期见~

程序人生丨程序员必会的 10 种核心技能,全掌握你就是行业高手

这都是作为程序员的基本技能,将长期伴随你的程序员职业生涯。如果你的目标是从事软件开发和编程工作,那么这些都是保持竞争力而可以学习和提高的东西。

数据结构和算法

如果想成为一名合格的程序员,那么必须了解掌握数据结构和算法。这是任何编程工作面试的重要主题之一,如果不知道基本的数据结构(例如数组、链表、映射、集合),就不可能编写真实世界的应用程序。数据结构和算法是最能体现程序员基本功的方面,不管计算机专业还是培训课程,数据结构和算法都是首先教授的内容。

已经参加工作但数据结构和算法知识欠佳的同学,花点时间学一学,不要只是满足于学会什么什么工具和框架,基础知识有百益而无一害。

源代码管理

源代码管理是用来存储代码的,程序员必须了解Git和SVN等版本控制工具。源代码管理可以降低对具体人员的依赖,有利于代码审查,提升团队整体水平。

从大的社会发展趋势来说,分布式是大趋势,Git 正好适应了这个趋势,之前的主流代码管理方案比如 CVS,SVN 都是集中式的。由于分布式的特点,造就了更高的灵活性,可以适应更多的场景。所以Git一定程度上简化了市场,对于初学者来说,GitHub终极版:MasterGit和GitHub是一个很好的开始,也需要熟练掌握诸如分支和合并等高级版本控制概念以及使用命令行和GUI的工具。

文本编辑器

作为程序员工作时,没有一天不使用文本编辑器。即使对于非程序员和任何与计算机打交道的人来说,它也是必不可少的工具之一。

一般主要是在Windows上使用NotePad,在Linux中使用VIM,但是在高级编辑器方面有很多选择,比如Sublime和NotePad++,后者提供类似IDE的功能。不妨花点时间学习最喜欢的编辑器和键盘快捷键,了解一些提高效率的技巧。

IDE

对于任何程序员来说,现代IDE都是非常重要的工具。对于C、C++和C语言程序员,选择非常明确:Visual Studio。对于Python开发人员来说,Jupiter Notebook每天都在变得越来越好。对于Java程序员来说,有三种主要的IDE可供选择:Eclipse、NetBeans和IntelliJ。对于用“世界上最好的语言”PHP的程序员,PHPStorm、Sublime Text 都是不错的选择。

数据库和SQL

SQL允许用户每次访问一大批的数据。通过一条语句,SQL命令就能够检索或者更新多个表中的数千条记录。这就避免了很多的复杂性。当想要处理每一条记录时,计算机程序不再需要按照特定的顺序一次读取一条记录。过去需要数百行程序代码才能完成的任务,现在只需要几行代码就可以完成。SQL是经典之作,数据库无所不在,程序员应该熟悉一些基本的数据库概念,如规范化和表设计以及SQL。

关键是应该熟悉数据库,知道如何插入/更新/删除数据,以及如何编写SQL查询来检索数据,对诸如连接聚合函数之类的高级概念的了解也将很有意义。

UNIX或Linux

与SQL一样,UNIX也经受住了时间的考验,已经存在了30多年。由于大多数程序员在某个时候都必须在UNIX机器上工作,因此对Linx命令行的良好了解是很有帮助的。

它可以让程序员以更高的效率工作,可以搜索文件,通过检查系统的CPU和内存使用情况来了解系统的状况,并执行基本任务和高级任务。GitHub上有一份入门&进阶指南,名字叫“命令行的艺术”,在GitHub收获了5万标星,这份资源不仅能帮助刚接触命令行的新手,对有经验的人也大有裨益。

Excel

Excel是程序员、软件开发人员、项目经理、交易者和商务人员的最佳工具之一。它不仅仅是电子表格软件,还提供了许多有用的特性和功能来执行复杂的数据分析。

程序员可以使用Excel来跟踪进度,协调数据,数据分析,数据质量检查和项目规划。这就是为什么敦促每个程序员深入学习Excel的原因。它不只有复制和粘贴数据,还应该一些基本的功能,比如搜索、排序、过滤和VLOOKUP来比较数据。

编程语言

作为程序员,必须深入编程语言:C++、Java、PHP、Python、JavaScript……根据兴趣爱好和具体情况进行选择。

PHP是一门简单的后端技术编程语言,它与HTML关系是最紧密的,当学习HTML之后再来学习PHP你会发现很快入手,PHP最让新生喜爱的是可以直接嵌入HTML运行,所以没有考虑很多问题,是选择后台编程语言的首选。

网络基础

今天的世界是互联的世界,无论走到哪里,计算机网络都是无处不在的,从家里开始,在许多设备上使用Wi-Fi,到使用局域网(LAN)到万物互联的学校、公司和商场。

程序员编写的大多数应用程序也不是独立的,而是客户端服务器类型的应用程序,在这种应用程序中,请求将通过网络传递到服务器,客户将从世界任何地方访问该应用程序。所以程序员必须了解网络基础知识,才能更好地理解、开发和支持自己的应用程序。

脚本语言

前面已经说了编程语言,那同一种编程语言不能用作脚本语言吗?

当然,有些语言既适合面向对象编程,也适合编写脚本,比如Python。但如果恰巧学习的是C/C++或Java,那么就不能像Python或Perl开发人员那样快速地完成一些事情。

脚本语言使得创建工具和脚本以解决编程世界中的常见问题很容易,如果你对Python这样的脚本语言有很好的掌握,那么你就可以轻松地实现日常工作的自动化。

以上的十条技能涵盖了每位程序员初入行业所需的必备技能,希望能为阅读到这篇文章的每一位程序员提供一参考,以及进行职业规划的新思路。也欢迎行业前辈们分享自己的经验、踩过的坑,为新手程序员保驾护航。

- EOF -

为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!

编程学习与提升

微信公众号:C语言编程学习基地

欢迎转行和学习编程的伙伴,利用更多的资料学习成长比自己琢磨更快哦!大家也要把握住大学的时光,抓住成长的每一次机会哦~

以上是关于程序员必会技能—— 使用日志的主要内容,如果未能解决你的问题,请参考以下文章

java必会技能

2020最新40K技能清单:聚焦Java开发工程师必知必会的进阶知识!

Java高级开发必会的性能优化的细节

JDK最简单的安装方法

13个开发者技能必知必会!

程序人生丨程序员必会的 10 种核心技能,全掌握你就是行业高手