• Lo4j(二)级别和优化


    在log里面有日志级别:

    DEBUG Level: 指出细粒度信息事件对调试应用程序是非常有帮助的,就是输出debug的信息.
    INFO level: 表明消息在粗粒度级别上突出强调应用程序的运行过程,就是输出提示信息.
    WARN level: 表明会出现潜在错误的情形,就是显示警告信息.
    ERROR level: 指出虽然发生错误事件,但仍然不影响系统的继续运行.就是显示错误信息.
    FATAL level: 指出每个严重的错误事件将会导致应用程序的退出.
    ALL level: 是最低等级的,用于打开所有日志记录.
    OFF level: 是最高等级的,用于关闭所有日志记录.

    从低到高,会在设定低级别后,输出比其级别高的信息。

    DEBUG < INFO < WARN < ERROR < FATAL

    比如在输出控制台信息的时候:

        <!-- 将日志信息输出到控制台 -->
         <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
         <!--    设置日志输出的样式 -->     
            <layout class="org.apache.log4j.PatternLayout">
              <!--   设置日志输出的格式 -->
               <!--  <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /> -->
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] [method:%l]%m%n"/>
            <!-- 设置日志输出级别,开发可以设置为debug,正式上线可以用info -->
            <param name="Threshold" value="DEBUG"></param> 
            </layout>
        </appender>

    这里设置了debug,就会输出debug,及大于它的信息。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">    
    <log4j:configuration>
    
        <!-- 将日志信息输出到控制台 -->
         <appender name="stdout" class="org.apache.log4j.ConsoleAppender">
         <!--    设置日志输出的样式 -->
         
            <layout class="org.apache.log4j.PatternLayout">
              <!--   设置日志输出的格式 -->
               <!--  <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss:SSS}] [%-5p] [method:%l]%n%m%n%n" /> -->
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] [method:%l]%m%n"/>
            <!-- 设置日志输出级别,开发可以设置为debug,正式上线可以用info -->
            <param name="Threshold" value="DEBUG"></param> 
            </layout>
        </appender>
        
        <!-- 输出日志到文件  每天一个文件 -->
         <appender name="logfile" class="org.apache.log4j.DailyRollingFileAppender">
             <param name="Threshold" value="info"></param> 
            <!-- 设置日志信息输出文件全路径名 -->
            <param name="File" value="D:/log4j/logs/logFile.log" />
            <!--   设置日志以天为单位回滚一次,即产生一个新的日志文件 -->
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
           <!--  设置日志输出的样式 -->
            <layout class="org.apache.log4j.PatternLayout">
               <!--  设置日志输出的格式 -->
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] [method:%l]%m%n" />
            </layout>
        </appender>
        <!-- 设置日志缓存,及缓存大小 -->
        <appender name="async" class="org.apache.log4j.AsyncAppender">
    	    <param name="BufferSize" value="512"/>
    	    <appender-ref ref="stdout"/>
    	    <appender-ref ref="logfile"/>
    	</appender>
        
        
         <!-- 输出日志到文件  文件大小到达指定尺寸的时候产生一个新的文件 --> 
        <!-- 将日志信息输出到文件,但是当文件的大小达到某个阈值的时候,日志文件会自动回滚 -->
        <appender name="railyFile" class="org.apache.log4j.RollingFileAppender">
            <!-- 设置日志信息输出文件全路径名 -->
            <param name="File" value="D:/log4j/logs/logFile2.log" />
     <!--        设置是否在重新启动服务时,在原有日志的基础添加新日志
            <param name="Append" value="true" /> -->
            <!-- 设置保存备份回滚日志的最大个数 -->
            <param name="MaxBackupIndex" value="10" />
          <!--   设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB -->
            <param name="MaxFileSize" value="10MB" />
           <!--  设置日志输出的样式 -->
            <layout class="org.apache.log4j.PatternLayout">
               <!--  设置日志输出的格式 -->
                <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%-5p] %m%n" />
            </layout>
        </appender>
    
        <!-- 设置日志缓存,及缓存大小 -->
        <appender name="railyFileappender" class="org.apache.log4j.AsyncAppender">
    	    <param name="BufferSize" value="512"/>
    	    <appender-ref ref="railyFile"/>
    	</appender>
    	<!-- 整体设置日志的输出级别 -->
    <root>
        <level value="debug" />
        <appender-ref ref="stdout"/>
        <appender-ref ref="logfile"/>
        <appender-ref ref="railyFile"/>
    </root>
    </log4j:configuration>
    

      可以在root统一设定,所有appender的日志级别,不过,如果在appender里面设置的高于root的,

    <param name="Threshold" value="info"></param> 

    以append里面的优先级为准。 

    如以上,控制台会从debug信息输出,log文件就只会输出info级别以上的信息。

    优化:

    a:控制log信息的级别,也可以起到优化的作用。

    b:设置日志缓存,以及缓存大小 

    <param name="BufferSize" value="512"/>
    

       以上配置说明,当日志内容达到8k时,才会将日志输出到日志输出目的地。

    c:设置日志输出为异步方式 

        <!-- 设置日志缓存,及缓存大小  和日志的异步输出 -->
        <appender name="async" class="org.apache.log4j.AsyncAppender">
    	    <param name="BufferSize" value="512"/>
    	    <appender-ref ref="stdout"/>
    	    <appender-ref ref="logfile"/>
    	</appender>
    

      配置log的格式:

    日志格式化(Layout)
    %c 类全名
    %d 时间
    %f 类名
    %l 位置
    %m 信息
    %n 换行
    %p 级别
    %r 耗时
    %t 线程名

  • 相关阅读:
    类的加载
    java经典面试题(转)
    I/O NIO 2
    【转】Impala和Hive的关系
    【转】工作站和服务器的区别
    JAVA之线程
    【转】Linux中vim的粘贴复制快捷键的使用
    【转】Zookeeper集群为什么要是单数
    【转】Impala常见错误
    hadoop命令工作常用
  • 原文地址:https://www.cnblogs.com/sunxun/p/9059567.html
Copyright © 2020-2023  润新知