软件构造---log4j的配置和使用

log4j的配置和使用---IDEA

    Log4j是Apache的一个开源项目,使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。这些可以通过一个配置文件来灵活地进行配置。

    但是自己在配置过程中,浏览了好多博客,都是这里看一点,那里找一点,没有完全详细的介绍,这里自己简单总结一下,因为通过软件构造几次试验,感觉日志功能还是挺实用的,而log4j功能又很强大,如果能通过配置文件灵活配置显然是极好的。(我用的IDE是IntelliJ IDEA,Eclipse可能会有不同

添加依赖    

在pom.xml中添加依赖

  1. <!-- 依赖 -->  
  2.   <dependencies>  
  3.     <dependency>  
  4.       <!--log4j依赖-->  
  5.       <groupId>log4j</groupId>  
  6.       <artifactId>log4j</artifactId>  
  7.       <version>1.2.17</version>  
  8.     </dependency>  
  9.   </dependencies>  
  10. </project>  

导入项目

在官网上下载http://logging.apache.org/log4j/1.2/download.html,得到压缩文件log4j-1.2.17.zip,解压得到log4j-1.2.17.jar包

File->Project Structure 

软件构造---log4j的配置和使用

选择Mudules--->Dependencies

软件构造---log4j的配置和使用


看到右边的加号,选择第一个JARs or directories...导入刚才下载解压的log4j-1.2.17.jar

软件构造---log4j的配置和使用

软件构造---log4j的配置和使用

配置文件

在res目录下创建log4j.properties文件(为什么在res目录下,是因为我的pom.xml配置文件要求的)

软件构造---log4j的配置和使用

软件构造---log4j的配置和使用

(如果后面配置不成功,请放在src目录下)

文件格式(properties格式)
  1. log4j.rootLogger = info,I,W  
  2.   
  3. log4j.appender.I = org.apache.log4j.DailyRollingFileAppender  
  4. log4j.appender.I.File = res/info.log  
  5. log4j.appender.I.Append = true  
  6. log4j.appender.I.Threshold = INFO  
  7. log4j.appender.I.layout = org.apache.log4j.PatternLayout  
  8. log4j.appender.I.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n  
  9.   
  10. log4j.appender.W = org.apache.log4j.DailyRollingFileAppender  
  11. log4j.appender.W.File = res/warn.log  
  12. log4j.appender.W.Append = true  
  13. log4j.appender.W.Threshold = WARN  
  14. log4j.appender.W.layout = org.apache.log4j.PatternLayout  
  15. log4j.appender.W.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n  


详细格式介绍我参考了博客https://blog.csdn.net/xianymo/article/details/51026663,侵删

一下为我认为重点理解的地方,简单说一下

1. 配置根Logger: 

log4j.rootLogger = [ level ] , appenderName, appenderName, … 

其中,level 是日志记录的级别,Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。定义级别后,在此级别以下的级别信息将不会被打印出来,比如我的例子:level是info,那么logger.debug()的信息就不会被打印出来。

2. 配置日志信息输出目的地Appender,其语法为: 
Log4j提供的appender有以下几种: 
org.apache.log4j.ConsoleAppender(控制台), 
org.apache.log4j.FileAppender(文件), 
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
... ... ...
3.输出格式设置 
在配置文件中可以通过log4j.appender.A1.layout.ConversionPattern设置日志输出格式。 
参数: 
%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数 
%c: 输出日志信息所属的类目,通常就是所在类的全名 
%t: 输出产生该日志事件的线程名 
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:MonkeyGenerator.main(MonkeyGenerator.java:38)
... ... ...

使用

软件构造---log4j的配置和使用
1.得到记录器 
public static Logger getLogger( String name)
Name一般取本类的名字,比如: 
static Logger logger = Logger.getLogger (MonkeyGenerator.class)
软件构造---log4j的配置和使用
2.插入记录信息(格式化日志信息)  
logger.debug ( Object message ) ; 
logger.info ( Object message ) ; 
logger.warn ( Object message ) ; 
logger.error ( Object message ) ;
软件构造---log4j的配置和使用