java项目中日志的配置

1.日志相关比较详细的介绍:https://www.cnblogs.com/tanshaoxiaoji/p/log4j_config.html

2.总结1中博客说的内容

目前市场上常用的日志有log4j(Apache)、commons-logging(Apache)、logging(JDK1.4)、slf4j、logback

他们之间各有优缺点,通常项目中会用两种组合的方式。

3.项目中遇到的日志配置(commons-logging + log4j)

日志的配置可以用properties文件或xml文件的方式配置

a.commons-logging.properties

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

b.log4i.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">  
  
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  
    <!-- logger 分 5 级: #FATAL-0, #ERROR-3, #WARN-4, #INFO-6, #DEBUG-7 -->  
    <!--   
    %c 输出日志信息所属的类的全名   
    %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2008-08-08 20:08:08   
    %f 输出日志信息所属的类的类名   
    %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行   
    %m 输出代码中指定的信息,如log(message)中的message   
    %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”   
    %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推   
    %r 输出自应用启动到输出该日志信息所耗费的毫秒数   
    %t 输出产生该日志事件的线程名   
    -->  
  

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Threshold" value="info"/>
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] (%F:%L) - %m%n" />  
        </layout>  
    </appender>  
    
    <appender name="file" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="migrate/MigrateTool.log" />  
        <param name="Append" value="true" />  
        <param name="Encoding" value="UTF-8" />
        <param name="MaxFileSize" value="2MB"/> 
        <param name="MaxBackupIndex" value="10"/>  
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] (%F:%L) - %m%n" />
        </layout>  
    </appender>  
              
    <logger name="com.wl.service.commom" additivity="false">   
        <level value="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </logger>  
    
    <logger name="com.wl.service.utils" additivity="false">   
        <level value="debug" />
        <appender-ref ref="Log.MigrateTool.File" />
    </logger> 
    
    <!-- level = info/off -->  
    <root>  
       <level value="debug" />  
       <appender-ref ref="console" />
       <appender-ref ref="file" /> 
    </root>  
  
</log4j:configuration> 

4.结合3中log4j.xml解析具体的配置的含义

a.加载。默认情况下,项目在启动的时候会加载classpath中名为log4j.properties或log4j.xml文件

b.日志的输出类型appender。有五种

  org.apache.log4j.ConsoleAppender(输出在控制台) 
    org.apache.log4j.FileAppender(输出到文件)    
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)    
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),可通过log4j.appender.R.MaxFileSize=100KB设置文件大小,还可通过log4j.appender.R.MaxBackupIndex=1设置为保存                    一个备份文件    
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) 

 <appender name="file" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="migrate/MigrateTool.log" />  
        <param name="Append" value="true" />  
        <param name="Encoding" value="UTF-8" />
        <param name="MaxFileSize" value="2MB"/> 
        <param name="MaxBackupIndex" value="10"/>  
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] (%F:%L) - %m%n" />
        </layout>  
    </appender>  

c.日志输出的格式layout

如:

 <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] (%F:%L) - %m%n" />
        </layout>  
输出结果示例
2019-06-14 11:17:12,807 [INFO ] [ExportDataTask.java:34] - ----------info log------------

格式输出的format 

 %m   输出代码中指定的消息
  %p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
  %r   输出自应用启动到输出该log信息耗费的毫秒数 
  %c   输出所属的类目,通常就是所在类的全名 
  %t   输出产生该日志事件的线程名 
  %n   输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n” 
  %d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921  
  %l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 ) 

d.日志级别的设置logger

<logger name="com.wl.service.commom" additivity="false">   
        <level value="debug" />
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </logger>  

设置包com.wl.service.commom下面的日志输出级别、输出位置和输出格式

e.日志级别

日志级别有五种,会输出设置级别及以上的日志。

日志级别排序:debug<info<error<warn<fatal(系统崩溃,程序终止)

 f.默认日志级别设置root

<root>  
       <level value="debug" />  
       <appender-ref ref="console" />
       <appender-ref ref="file" /> 
    </root>  

对于没有进行4.d中的设置所指定的日志方式的设置

 

猜你喜欢

转载自www.cnblogs.com/wang-liang-blogs/p/11023143.html