文章目录
目录
前言
一、log4j概念介绍
1.什么是log4j?
2.使用log4j的优点?
3.使用log而不用syetem.out.println?
4.常用格式:
二、IDEA文件结构介绍
1.Sources Root:
2.Test Sources Root:
3.Resource Root:
4.Test Resource Root
5.Excluded:
三、目标文件的定义
四、IDEA项目结构
1.project
2.module
3.Library
4.Facet
5.web模块
6.Artifact
7.jar,war,exploded
8.总结
前言
前几天在项目中写接口的时候还用的是System.out.println()方法查看输出信息,被组长改成log了,可把我丢脸丢大了,赶紧补习一下log4j的相关知识
一、log4j概念介绍
1.什么是log4j?
- Log4j是Apache的一个开源项目,它可以控制日志信息输出到控制台,文件GUI组件,甚至是数据库中.我们可以控制每一条日志的输出格式,通过定义日志的输出级别,可以更灵活的控制日志的输出过程.方便项目的调试.
- 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.常用格式:
- logger.debug("xxxxxxx")
- log.debug("xxxxxx")
二、IDEA文件结构介绍
1.Sources Root:
通过这个类指定一个文件夹,意味着你告诉IDEA,这个文件夹及其子文件夹中包含的源代码,可以编译为构建过程的一部分
2.Test Sources Root:
这些根类类似于源根,但是用于测试的代码(比如单元测试).测试源文件夹允许你将与测试相关的代码与生产代码分开,通常情况下,源和测试源的编译结果被放置在不同的文件夹中.
3.Resource Root:
- 重要:springmvc在使用时,web.xml常用配置的classpath所指的位置就是这个设置后的resources包下的位置
- 用于应用程序中的资源文件(图像,各种配置xml和属性文件等)
- 在构建过程中,资源文件夹的所有内容都复制到输出文件夹中,如下所示
- 在构建过程中,resources文件夹中的内容均会按照原文件的样子被复制到输出文件夹.和source文件夹一样,你可以指定你的resources文件夹的结构.你也可以指定你的resources文件夹中的文件被拷贝到输出文件的哪个文件夹中
- PS:默认情况下,工程编译后,resources中的文件和文件夹会被放置在源码编译后相同的文件夹中,所以如果在源码中以相对路径读取resources中的配置文件时,可认为src中的java文件夹和resources为同一个根目录.
4.Test Resource Root
(只有在java模式中可以使用),用于存放测试源码中关联的资源文件.除此之外,和resource文件夹没有区别.
5.Excluded:
- 将文件标记为Excluded目录后,idea就不会为该文件创建索引,全局搜索页不会搜索到里面的内容,编辑代码不会智能提示,Excluded Folders相当于代码废弃场.
三、目标文件的定义
- 用来安装的文件叫做源文件
- 安装好的文件叫做目标文件
- 目标文件安装的文件夹叫目标文件夹
四、IDEA项目结构
1.project
- idea中没有工作空间的概念,每一个项目都是一个工作空间,一个项目将一个项目的所有源代码,库和指令封装到一个单独的组织单元中.使用Intellij平台SDK完成所有工作.项目定义了称为模块和库的集合.
- project下的moudule的概念类似于eclipse中project,一个聚合项目可以配置多个module(可以当作workspace来用)
2.module
- 模块是一个独立的功能单元,可以独立的运行测试和调试.模块包括诸如源代码,构建脚本,单元测试,部署描述符,依赖管理等.在一个项目中,每个模块都可以使用特定的SDK或继承在项目级别定义的SDK(参见本文下面的SDK部分)
- 一个模块可以依赖于项目的其他模块.
- 一个项目可以有一个或多个模块,比如Spring,Web.这些模块都是现有的,可用的.
3.Library
- 库是模型依赖的代码集合文件(比如JAR文件),可以从自己选择jar包或者使用maven
4.Facet
- facet声明了每个模块使用技术的一些配置,一个模块可能有多个facet,Spring模块的配置就声明在Spring fact,Spring的主类和配置文件是Spring的一些配置,但是不告诉IEDA在哪,所以在Facet写清楚在什么地方(默认会更好)
5.web模块
- 在web吗模块中,需要配web.xml资源和目录的位置,也可以直接用默认的,一般我们建立/src/main/app
- web资源目录的文件夹有一个小蓝点,访问路径/就是从这里开始找资源的
6.Artifact
- artifact是放在一起测试,部署或发布您的软件解决方案或着其他的项目资产集合
- 比如:已经编译的java类的集合或打包在java归档中的java程序,作为目录结构的web应用程序等
- artifact就是为了打包成jar 或war的一个配置声明,比如你想把项目分享给小明,或者发布项目到Tomcat上,如何分析发布?
- java提供了一个专门的打包方法,就是java,就是jar和war浏览器,因此打包成JAR和WAR必须需要有一个artifact
7.jar,war,exploded
- jar:javaARchive,通常用于聚合大量的java类文件,相关的元数据和资源(文本,图片)文件到一个文件,以便分发java平台应用软件或库
- war:Web application ARchive,一种JAR文件,其中包含用来分发的JSP,Java Servlet,Java类,XML文件,标签库,静态网页(HTML和相关文件),已经构成Web应用程序的其他资源
- exploded:在这里你可以理解为展开,不压缩的意思,也就是war,jar等产出物没压缩前的目录结构.建议在开发的时候选择这种模式,便于修改了文件的效果能立刻显现出来
8.总结
- IDEA中工程(project)配好我们的JDK版本,一个工程可以包含多个模块(module),我们开发的一个项目包含一个或者多个模块,比如Web模块,spring模块,还要配好这些模块的配置信息.我们通过Library把我们项目中所需的依赖JAR包导好.
- Facet声明了我们每个模块使用技术的配置(注意和module结合区分理解),最重要的是在这里配好web.xml和web资源目录的位置
- 在我们把项目发布到tomcat或导出成JAR包之前, 我们需要把项目打成artifact来方便部署,通常我们选择war_exploded热部署