<?xml version="1.0" encoding="UTF-8"?> <!--鏃ュ織绾у埆浠ュ強浼樺厛绾ф帓搴�: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <Configuration status="WARN" monitorInterval="60"> <!-- 鑷畾涔変竴浜涘彉閲� --> <Properties> <!-- 鍙橀噺瀹氫箟 --> <Property name="log_base_dir">logs/shared_rest_web</Property> <Property name="log_debug_dir">${log_base_dir}/debug</Property> <Property name="log_info_dir">${log_base_dir}/info</Property> <Property name="log_error_dir">${log_base_dir}/error</Property> <Property name="log_sql_dir">${log_base_dir}/sqllog</Property> <Property name="log_pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} [%highlight{%-8level}{ERROR=Red, WARN=Yellow, INFO=Green, DEBUG=White}] [%t-%T]-%style{[%c{1.}.%M:%L]}{Blue} : %msg%xEx%n</Property> <!-- 鍗曚釜鏃ュ織鏂囦欢鏈€澶уぇ灏忥紝鍗曚綅鍙互鏄疜B, MB or GB --> <Property name="max_single_file_size">5MB</Property> </Properties> <!-- 浣跨敤Appenders鍏冪礌鍙互灏嗘棩蹇椾簨浠舵暟鎹啓鍒板悇绉嶇洰鏍囦綅缃紙鐩墠鍙互涓烘帶鍒跺彴銆佹枃浠躲€佸绉嶆暟鎹簱API銆佽繙绋嬪鎺ュ瓧鏈嶅姟鍣ㄣ€丄pache Flume銆� JMS銆佽繙绋婾NIX Syslog daemon锛夛紝鍏跺唴鐨勬瘡涓狝ppender閮藉繀椤昏鏈変竴涓猲ame灞炴€т綔涓哄敮涓€鏍囪瘑锛岃鏍囪瘑鐨勫€煎湪Logger涓€氳繃AppenderRef鏉ュ紩 鐢紝浠庤€屽皢璇ppender閰嶇疆鍒拌Logger涓� --> <Appenders> <!-- Console Appender甯哥敤浜庡皢鏃ュ織杈撳嚭鍒癝ystem.out锛屼竴鑸敤鍦ㄥ紑鍙戠幆澧� --> <Console name="Console" target="SYSTEM_OUT"> <!-- 鍙帴鍙楃▼搴忎腑DEBUG绾у埆鐨勬棩蹇楄繘琛屽鐞�--> <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/> <!-- 鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝Appender灏嗘牸寮忓寲LogEvent鐨勮矗浠诲鎵樼粰Layout --> <PatternLayout pattern="${log_pattern}"/> </Console> <RollingFile name="ErrorLogRollingFile" fileName="${log_error_dir}/error.log" filePattern="${log_error_dir}/$${date:yyyy_MM_dd}/error_%d{yyyy_MM_dd}_%i.log.gz"> <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="${log_pattern}"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${max_single_file_size}"/> </Policies> <DefaultRolloverStrategy fileIndex="nomax"> <Delete basePath="${log_error_dir}" maxDepth="2"> <IfFileName glob="*/error_*.log.gz"> <IfAny> <!-- <IfAccumulatedFileSize exceeds="3GB"/>--> <!-- <IfAccumulatedFileCount exceeds="3000"/>--> <IfLastModified age="3D"/> </IfAny> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> <RollingFile name="InfoLogRollingFile" fileName="${log_info_dir}/info.log" filePattern="${log_info_dir}/$${date:yyyy_MM_dd}/info_%d{yyyy_MM_dd_HH}_%i.log"> <!-- <ThresholdFilter level="INFO" onMatch="DENY" onMismatch="DENY"/>--> <LevelRangeFilter minLevel="WARN" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${log_pattern}"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${max_single_file_size}"/> </Policies> <DefaultRolloverStrategy fileIndex="nomax"> <Delete basePath="${log_info_dir}" maxDepth="2"> <IfFileName glob="*/info_*.log"> <IfAny> <!-- <IfAccumulatedFileSize exceeds="8MB"/>--> <IfAccumulatedFileCount exceeds="5"/> <IfLastModified age="PT1H"/> </IfAny> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> <!-- 杩欎釜RollingFile Appender浼氭墦鍗板嚭鎵€鏈夌殑DEBUG鍙婁互涓嬬骇鍒紙DEBUG銆両NFO銆丒RROR銆丗ATAL銆丱FF锛夌殑淇℃伅 --> <RollingFile name="DebugLogRollingFile" fileName="${log_debug_dir}/debug.log" filePattern="${log_debug_dir}/$${date:yyyy_MM_dd}/debug_%d{yyyy_MM_dd_HH}_%i.log"> <!-- <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>--> <LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY" /> <PatternLayout pattern="${log_pattern}" charset="UTF-8"/> <!-- Policies琛ㄧず涓€涓狢ompositeTriggeringPolicy锛屽彲浠ョ粍鍚堝涓猅riggeringPolicy锛屽彧瑕佸唴閮ㄧ殑浠绘剰涓€涓猅riggeringPolicy 婊¤冻瑙﹀彂鏉′欢锛岄兘浼氭粴鍔ㄦ棩蹇� --> <Policies> <TimeBasedTriggeringPolicy /> <!-- SizeBasedTriggeringPolicy鐢ㄤ簬鎸夋枃浠跺ぇ灏忔粴鍔ㄦ棩蹇椼€傛瘡褰撴棩蹇楁枃浠惰秴杩噑ize鎸囧畾鐨勫ぇ灏忥紙涓€鑸笉瓒呰繃鍑犲崄MB锛屽惁鍒欎娇鐢ㄨ蒋 浠舵墦寮€瀵煎嚭鐨勬棩蹇楁椂寰堜笉鏂逛究锛夛紝鍒欒繖size澶у皬鐨勬棩蹇椾細鑷姩瀛樺叆鎸塮ilePattern灞炴€ф寚瀹氬缓绔嬬殑鏂囦欢澶逛笅闈㈠苟杩涜鍘嬬缉瀛樻。 --> <SizeBasedTriggeringPolicy size="${max_single_file_size}"/> </Policies> <!--<DefaultRolloverStrategy max="100" min="1" fileIndex = "nomax"/>--> <DefaultRolloverStrategy fileIndex="nomax"> <Delete basePath="${log_debug_dir}" maxDepth="2"> <IfFileName glob="*/debug_*.log"> <IfLastModified age="PT1M"> <!-- 杩欓噷鐨処fAny鍐呭祵浜嗕袱涓狿athCondition锛岃〃绀烘弧瓒充换鎰忎竴涓潯浠跺嵆鍙� ,涓嶆槸蹇呴』锛屽彲鐩存帴鏍规嵁鏃堕棿鍒犻櫎--> <IfAny> <!-- IfAccumulatedFileSize鍙€氳繃exceeds灞炴€у€兼寚瀹氫竴涓枃浠舵€诲ぇ灏忎笂闄愬€笺€傚鏋滄枃浠舵暟瓒呰繃浜嗚涓婇檺鍊� 鍒欏垹闄ゆ枃浠� --> <IfAccumulatedFileSize exceeds="5MB"/> <!-- IfAccumulatedFileCount鍙€氳繃exceeds灞炴€у€兼寚瀹氫竴涓枃浠舵€绘暟涓婇檺鍊笺€傚鏋滄枃浠舵暟瓒呰繃浜嗚涓婇檺鍊� 鍒欏垹闄ゆ枃浠� --> <IfAccumulatedFileCount exceeds="5"/> </IfAny> </IfLastModified> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> <!-- <RollingFile name="WarnLogRollingFile" fileName="${log_base_dir}/my_app_warn.log"--> <!-- filePattern="${log_base_dir}/$${date:yyyy_MM_dd}/my_app_warn_%d{yyyy_MM_dd_HH}_%i.log.gz">--> <!-- <ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>--> <!-- <PatternLayout pattern="${log_pattern}"/>--> <!-- <Policies>--> <!-- <TimeBasedTriggeringPolicy/>--> <!-- <SizeBasedTriggeringPolicy size="${max_single_file_size}"/>--> <!-- </Policies>--> <!-- <DefaultRolloverStrategy fileIndex="nomax">--> <!-- <Delete basePath="${log_base_dir}" maxDepth="2">--> <!-- <IfFileName glob="*/my_app_warn_*.log.gz">--> <!-- <IfAny>--> <!-- <IfAccumulatedFileSize exceeds="3GB"/>--> <!-- <IfAccumulatedFileCount exceeds="3000"/>--> <!-- <IfLastModified age="30d"/>--> <!-- </IfAny>--> <!-- </IfFileName>--> <!-- </Delete>--> <!-- </DefaultRolloverStrategy>--> <!-- </RollingFile>--> <!-- 璁板綍druid鐨凷QL璇彞 --> <RollingFile name="DruidSqlRollingFile" fileName="${log_sql_dir}/druid.log" filePattern="${log_sql_dir}/$${date:yyyy_MM_dd}/druid_%d{yyyy_MM_dd}_%i.log"> <PatternLayout pattern="${log_pattern}"/> <Policies> <TimeBasedTriggeringPolicy/> <SizeBasedTriggeringPolicy size="${max_single_file_size}"/> </Policies> <DefaultRolloverStrategy fileIndex="nomax"> <Delete basePath="${log_base_dir}" maxDepth="2" testMode="true"> <IfFileName glob="*/druid_*.log"> <IfAny> <!-- <IfAccumulatedFileSize exceeds="3GB"/>--> <!-- <IfAccumulatedFileCount exceeds="3000"/>--> <IfLastModified age="PT6H"/> </IfAny> </IfFileName> </Delete> </DefaultRolloverStrategy> </RollingFile> </Appenders> <!--瀹氫箟logger锛屽彧鏈夊畾涔変簡logger骞跺紩鍏ョ殑appender锛宎ppender鎵嶄細鐢熸晥--> <Loggers> <!-- 褰揕ogger鍦ㄩ厤缃枃浠朵腑澹版槑鏃讹紝灏卞垱寤轰簡涓€涓狶oggerConfig瀵硅薄锛屼袱鑰呬竴涓€瀵瑰簲锛孡oggerConfig鍖呭惈涓€浜汧ilter銆佽繖浜� Filters鐢ㄤ簬杩囨护浼犻€掔粰浠绘剰Appender鐨凩ogEvent锛屽畠杩樺寘鍚竴浜汚ppender鐨勫紩鐢ㄣ€侺ogger鏈韩鎵ц鏃犳寚鍚戠殑鍔ㄤ綔锛屽畠浠呭惈鏈変竴 涓笌LoggerConfig鍏宠仈鐨勫悕绉帮紙閫氳繃name灞炴€ф寚瀹氾級锛宺oot Logger鍏锋湁鍥哄畾鐨勯粯璁ゅ悕绉帮紝鍏朵粬Logger闇€瑕佹寚瀹氬悇鑷殑name灞炴€� 鍊笺€侺oggerConfig浼氳鍒嗛厤涓€涓棩蹇楃骇鍒紝閫氳繃level灞炴€ф潵鎸囧畾銆傚唴寤虹殑鏃ュ織绾у埆鎸変紭鍏堢骇浠庨珮鍒板簳鎺掑簭鏈夛細OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL锛孡og4j 2 涔熸敮鎸佽嚜瀹氫箟鐨勬棩蹇楃骇鍒€� --> <Root level="DEBUG"> <AppenderRef ref="Console"/> <AppenderRef ref="ErrorLogRollingFile" /> <AppenderRef ref="InfoLogRollingFile"/> <AppenderRef ref="DebugLogRollingFile"/> <!-- <AppenderRef ref="WarnLogRollingFile"/>--> </Root> <!--璁板綍druid-sql鐨勮褰�--> <Logger name="org.hibernate.SQL" level="debug" additivity="false"> <appender-ref ref="DruidSqlRollingFile"/> </Logger> <!--杩囨护鎺塻pring鍜宮ybatis鐨勪竴浜涙棤鐢ㄧ殑DEBUG淇℃伅--> <Logger name="org.springframework" level="INFO"/> <Logger name="org.mybatis" level="INFO"/> <!--log4j2 鑷甫杩囨护鏃ュ織--> <Logger name="org.apache.catalina.startup.DigesterFactory" level="error"/> <Logger name="org.apache.catalina.util.LifecycleBase" level="error"/> <Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn"/> <Logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/> <Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn"/> <Logger name="org.crsh.plugin" level="warn"/> <Logger name="org.crsh.ssh" level="warn"/> <Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error"/> <Logger name="org.hibernate.validator.internal.util.Version" level="warn"/> <Logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/> <Logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/> <Logger name="org.thymeleaf" level="warn"/> </Loggers> </Configuration> <!--<?xml version="1.0" encoding="UTF-8"?>--> <!--<Configuration name="log4j2" status="" xmlns="http://logging.apache.org/log4j/2.0/config" >--> <!-- <Properties>--> <!-- <Property name="home">./logs</Property>--> <!-- <Property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS}-%-2level-[%thread]</Property>--> <!-- </Properties>--> <!--</Configuration>-->