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>