前言

前几天在项目中写接口的时候还用的是System.out.println()方法查看输出信息,被组长改成log了,可把我丢脸丢大了,赶紧补习一下log4j的相关知识


一、log4j概念介绍

1.什么是log4j?

  1. Log4j是Apache的一个开源项目,它可以控制日志信息输出到控制台,文件GUI组件,甚至是数据库中.我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程.方便项目的调试.
  2. log4j是一个开源的日志,共分为六个等级:LOG,DEBUG,INFO,WARN,ERROR,FATAL,其中DEBUG是其中的一种日志级别.一般我们用这个方法的时候都是这样的,意思是,如果log4j的配置中开启了debug级别的日志,那我们就打印输出debug日志,其在输出日志中被标记为DEBUG

2.使用log4j的优点?

        在我们开发阶段有时候需要查看特定数据,我们可以把日志级别定为DEBUG级,调试信息会输出在日志里便于调试和跟踪修改bug.当产品发布上线后,可以在log4j配置中去掉DEBUG级别,别时调试信息就不回输出在日志里,日志会只显示运行的相关信息.如此一来,控制输出什么日志不需要修改代码,只需要修改配置文件的参数而已.

3.使用log而不用syetem.out.println?

        因为println()使用了同步锁,会影响程序的并发性能和系统的吞吐量.在工作中,项目代码中几乎没有println,都是试用log进行日志采集.

4.常用格式:

  1. logger.debug("xxxxxxx")
  2. log.debug("xxxxxx")

二、IDEA文件结构介绍

1.Sources Root:

        通过这个类指定一个文件夹,意味着你告诉IDEA,这个文件夹及其子文件夹中包含的源代码,可以编译为构建过程的一部分

2.Test Sources Root:

        这些根类类似于源根,但是用于测试的代码(比如单元测试).测试源文件夹允许你将与测试相关的代码与生产代码分开,通常情况下,源和测试源的编译结果被放置在不同的文件夹中.

3.Resource Root:

  1.  重要:springmvc在使用时,web.xml常用配置的classpath所指的位置就是这个设置后的resources包下的位置
  2. 用于应用程序中的资源文件(图像,各种配置xml和属性文件等)
  3. 在构建过程中,资源文件夹的所有内容都复制到输出文件夹中,如下所示
  4. 在构建过程中,resources文件夹中的内容均会按照原文件的样子被复制到输出文件夹.和source文件夹一样,你可以指定你的resources文件夹的结构.你也可以指定你的resources文件夹中的文件被拷贝到输出文件的哪个文件夹中
  5. PS:默认情况下,工程编译后,resources中的文件和文件夹会被放置在源码编译后相同的文件夹中,所以如果在源码中以相对路径读取resources中的配置文件时,可认为src中的java文件夹和resources为同一个根目录.

4.Test Resource Root

        (只有在java模式中可以使用),用于存放测试源码中关联的资源文件.除此之外,和resource文件夹没有区别.

5.Excluded:

  1. 将文件标记为Excluded目录后,idea就不会为该文件创建索引,全局搜索页不会搜索到里面的内容,编辑代码不会智能提示,Excluded Folders相当于代码废弃场.

三、目标文件的定义

  1. 用来安装的文件叫做源文件

  2. 安装好的文件叫做目标文件

  3. 目标文件安装的文件夹叫目标文件夹

四、IDEA项目结构

1.project

  1. idea中没有工作空间的概念,每一个项目都是一个工作空间,一个项目将一个项目的所有源代码,库和指令封装到一个单独的组织单元中.使用Intellij平台SDK完成所有工作.项目定义了称为模块和库的集合.
  2. project下的moudule的概念类似于eclipse中project,一个聚合项目可以配置多个module(可以当作workspace来用)

2.module

  1. 模块是一个独立的功能单元,可以独立的运行测试和调试.模块包括诸如源代码,构建脚本,单元测试,部署描述符,依赖管理等.在一个项目中,每个模块都可以使用特定的SDK或继承在项目级别定义的SDK(参见本文下面的SDK部分)
  2. 一个模块可以依赖于项目的其他模块.
  3. 一个项目可以有一个或多个模块,比如Spring,Web.这些模块都是现有的,可用的.

3.Library

  1. 库是模型依赖的代码集合文件(比如JAR文件),可以从自己选择jar包或者使用maven

4.Facet

  1. facet声明了每个模块使用技术的一些配置,一个模块可能有多个facet,Spring模块的配置就声明在Spring fact,Spring的主类和配置文件是Spring的一些配置,但是不告诉IEDA在哪,所以在Facet写清楚在什么地方(默认会更好)

5.web模块

  1. 在web吗模块中,需要配web.xml资源和目录的位置,也可以直接用默认的,一般我们建立/src/main/app
  2. web资源目录的文件夹有一个小蓝点,访问路径/就是从这里开始找资源的

6.Artifact

  1. artifact是放在一起测试,部署或发布您的软件解决方案或着其他的项目资产集合
  2. 比如:已经编译的java类的集合或打包在java归档中的java程序,作为目录结构的web应用程序等
  3. artifact就是为了打包成jar 或war的一个配置声明,比如你想把项目分享给小明,或者发布项目到Tomcat上,如何分析发布?
  4. java提供了一个专门的打包方法,就是java,就是jar和war浏览器,因此打包成JAR和WAR必须需要有一个artifact

7.jar,war,exploded

  1. jar:javaARchive,通常用于聚合大量的java类文件,相关的元数据和资源(文本,图片)文件到一个文件,以便分发java平台应用软件或库
  2. war:Web application ARchive,一种JAR文件,其中包含用来分发的JSP,Java Servlet,Java类,XML文件,标签库,静态网页(HTML和相关文件),已经构成Web应用程序的其他资源
  3. exploded:在这里你可以理解为展开,不压缩的意思,也就是war,jar等产出物没压缩前的目录结构.建议在开发的时候选择这种模式,便于修改了文件的效果能立刻显现出来

8.总结

  1. IDEA中工程(project)配好我们的JDK版本,一个工程可以包含多个模块(module),我们开发的一个项目包含一个或者多个模块,比如Web模块,spring模块,还要配好这些模块的配置信息.我们通过Library把我们项目中所需的依赖JAR包导好.
  2. Facet声明了我们每个模块使用技术的配置(注意和module结合区分理解),最重要的是在这里配好web.xml和web资源目录的位置
  3. 在我们把项目发布到tomcat或导出成JAR包之前, 我们需要把项目打成artifact来方便部署,通常我们选择war_exploded热部署

总结

参考和学习文档:

如何使用log.debug()_斜阳雨陌的博客-CSDN博客

Log4j入门教程_黄晓宇的博客-CSDN博客

IDEA项目结构:5分钟理解区分IDEA中的project、module、facet、artifact、Library、JAR和WAR_Suprit的博客-CSDN博客

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐