JAVA后台框架優化之日志篇


1.日志規范

     各業務系統日志需要統一,以方便查看、收集日志, 日后統一ELK日志管理,以下為項目的日志配置,

     這是兼容當前系統的日志,以后推行微服架構時會有變動,但日志存放方式不會改變,日后會推行spring boot log4j2.yml

      主要分為三塊 : 控制台日志 consoleAppend (本地調試可以打開,發布環境不能打開)

                                 業務日志   infoAppend  按日切分  ${catalina.home}/logs/ucenter/info.log  (ucenter 為具體業務模塊的名稱 如站點 site)

                                 錯誤日志  errorAppend 按日切分  ${catalina.home}/logs/ucenter/error.log

     各業務模塊接入:只要把下面  log4j.xml (鏈接)文件放到web 模塊 根目錄下即可。

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <!--
       * 1. 一個appender子元素定義一個日志輸出目的地
       * 2. 一個logger子元素定義一個日志寫出器
    -->
    <!-- catalina.out -->
    <appender name="consoleAppend" class="org.apache.log4j.ConsoleAppender" >
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%5p][%t][%c{1}]-[%M] %m%n" />
        </layout>
    </appender>

    <!-- error log -->
    <appender name="errorAppend" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="${catalina.home}/logs/ucenter/error.log" />
        <param name="Append" value="true" />
        <!--<param name="DatePattern" value="yyyy-MM-dd-HH-mm'.html'"/>-->
        <param name="DatePattern" value="yyyy-MM-dd'.log'"/>
        <param name="MaxBackupIndex" value="10" />
        <param name="MaxFileSize" value="4000000" />
        <param name="encoding" value="utf-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="ERROR" />
        </filter>
    </appender>

    <!-- INFO -->

    <!--org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)-->
    <!--<appender name="infoAppend" class="org.apache.log4j.RollingFileAppender">-->
    <appender name="infoAppend" class="cn.gamemall.ucenter.core.aop.logger.core.DailyRollingFileInfoAppender">
        <param name="File" value="${catalina.home}/logs/ucenter/info.log" />
        <param name="Append" value="true" />
        <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
        <!--<param name="MaxBackupIndex" value="10" />-->
        <!--<param name="MaxFileSize"  value="4096" />-->
        <param name="threshold" value="INFO"/>
        <param name="encoding" value="utf-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="DEBUG" />
            <param name="LevelMax" value="WARN" />
        </filter>
    </appender>

    <appender name="IBatisAppend" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="Append" value="true" />
        <param name="File" value="${catalina.home}/logs/ucenter/info.log" />
        <param name="DatePattern" value="'.'yyyy-MM-dd" />
        <param name="encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
        </layout>
        <filter class="org.apache.log4j.varia.LevelRangeFilter">
            <param name="LevelMin" value="ERROR" />
            <param name="LevelMax" value="FATAL" />
        </filter>
    </appender>

    <!--
        logger的作用:
        1.[name屬性]:指定你定義Logger對象時候的name
        2. additivity : children-logger是否使用 rootLogger的配置,
           additivity在log4j默認為true。這解釋了為什么有些時候,一個日志信息在屏幕上會有多次輸出。
        3.還可以指定level(輸出級別)、appender-ref(指定哪個append)
     -->
    <!-- loggers -->
    <logger name="com.ibatis" additivity="true">
        <level value="ERROR"/>
        <appender-ref ref="IBatisAppend" />
    </logger>
    <logger name="java.sql.Connection" additivity="true">
        <level value="ERROR"/>
        <appender-ref ref="IBatisAppend" />
    </logger>

    <logger name="java.sql.Statement" additivity="true">
        <level value="ERROR"/>
        <appender-ref ref="IBatisAppend" />
    </logger>

    <logger name="java.sql.PreparedStatement" additivity="true">
        <level value="DEBUG"/>
        <appender-ref ref="IBatisAppend" />
    </logger>

    <logger name="java.sql.ResultSet" additivity="true">
        <level value="ERROR"/>
        <appender-ref ref="IBatisAppend" />
    </logger>

    <logger name="cn.xxx.info" additivity="true">
        <!-- 如果1個包想對應多個 Appender 就這樣,對於每個Appender自定義的日志級別可以在Appender上加上filter -->
        <level value="INFO"/>
        <appender-ref ref="infoAppend" />
    </logger>
    <logger name="cn.xxx.error" additivity="true">
        <!-- 如果1個包想對應多個 Appender 就這樣,對於每個Appender自定義的日志級別可以在Appender上加上filter -->
        <level value="ERROR"/>
        <appender-ref ref="infoAppend" />
    </logger>

    <!--
        root的作用(相當於全局的意思):
        1.[priority ]:指定默認的全局輸出級別
        2.[appender-ref ]:指定一些默認的append(沒有指出特殊包或者類,即那些沒有指定<logger>元素的append)的輸出;
    -->
    <root>
        <priority value="INFO" />
        <!--<appender-ref ref="consoleAppend" />-->
        <appender-ref ref="IBatisAppend" />
        <appender-ref ref="errorAppend" />
        <appender-ref ref="infoAppend" />
    </root>

</log4j:configuration>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM