分享是最好的記憶--
如需轉(zhuǎn)發(fā)請(qǐng)注明出處 **
[強(qiáng)調(diào)]:共同學(xué)習(xí)** 共同進(jìn)步 不喜勿噴
所需jar包
- log4j-core-2.10.0.jar
- log4j-api-2.10.0.jar
- log4j-web-2.10.0.jar
<!--配置log4J-->
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value></param-value>
</context-param>
<context-param>
<param-name>log4jContextName</param-name>
<param-value>loggerName</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
此處配置文件內(nèi)容取自官方
<?xml version="1.0" encoding="UTF-8"?>
<!--
status : 這個(gè)用于設(shè)置log4j2自身內(nèi)部的信息輸出,可以不設(shè)置,當(dāng)設(shè)置成trace時(shí),會(huì)看到log4j2內(nèi)部各種詳細(xì)輸出
monitorInterval : Log4j能夠自動(dòng)檢測(cè)修改配置文件和重新配置本身, 設(shè)置間隔秒數(shù)境蔼。此處表示每隔600秒重讀一次配置文件
-->
<Configuration status="OFF" monitorInterval="600">
<!--日志級(jí)別:TRACE < DEBUG < INFO < WARN < ERROR < FATAL-->
<!--如果設(shè)置為WARN奶甘,則低于WARN的信息都不會(huì)輸出-->
<Properties>
<!-- 配置日志文件輸出目錄,此處為項(xiàng)目根目錄下的logs文件夾 -->
<Property name="LOG_HOME">logs</Property>
<property name="FILE_NAME">cnblogs</property>
</Properties>
<Appenders>
<!--這個(gè)輸出控制臺(tái)的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!--控制臺(tái)只輸出level及其以上級(jí)別的信息(onMatch)匠楚,其他的直接拒絕(onMismatch)-->
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<!--日志輸出的格式-->
<!--
%d{yyyy-MM-dd HH:mm:ss, SSS} : 日志生產(chǎn)時(shí)間,輸出到毫秒的時(shí)間
%-5level : 輸出日志級(jí)別,-5表示左對(duì)齊并且固定輸出5個(gè)字符哲虾,如果不足在右邊補(bǔ)0
%c : logger的名稱(%logger)
%t : 輸出當(dāng)前線程名稱
%p : 日志輸出格式
%m : 日志內(nèi)容锦亦,即 logger.info("message")
%n : 換行符
%C : Java類(lèi)名(%F)
%L : 行號(hào)
%M : 方法名
%l : 輸出語(yǔ)句所在的行數(shù), 包括類(lèi)名、方法名嫂拴、文件名高氮、行數(shù)
hostName : 本地機(jī)器名
hostAddress : 本地ip地址
-->
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!--
循環(huán)日志文件:日志文件大于閥值的時(shí)候,就開(kāi)始寫(xiě)一個(gè)新的日志文件
這個(gè)會(huì)打印出所有的信息顷牌,每次大小超過(guò)size剪芍,則這size大小的日志會(huì)自動(dòng)存入按年份-月份建立的文件夾下面并進(jìn)行壓縮,作為存檔
fileName : 指定當(dāng)前日志文件的位置和文件名稱
filePattern : 指定當(dāng)發(fā)生Rolling時(shí)窟蓝,文件的轉(zhuǎn)移和重命名規(guī)則
SizeBasedTriggeringPolicy : 指定當(dāng)文件體積大于size指定的值時(shí)罪裹,觸發(fā)Rolling
DefaultRolloverStrategy : 指定最多保存的文件個(gè)數(shù)
TimeBasedTriggeringPolicy : 這個(gè)配置需要和filePattern結(jié)合使用
注意filePattern中配置的文件重命名規(guī)則是${FILE_NAME}_%d{yyyy-MM-dd}_%i,最小的時(shí)間粒度是dd运挫,即天状共,
TimeBasedTriggeringPolicy指定的size是1,結(jié)合起來(lái)就是每1天生成一個(gè)新文件
-->
<RollingRandomAccessFile name="INFO" fileName="logs/${FILE_NAME}.log"
filePattern="log/${FILE_NAME}_%d{yyyy-MM-dd}_%i.log.gz">
<Filters>
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="TRACE" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="1MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
<!--錯(cuò)誤信息記錄-->
<RollingRandomAccessFile name="ERROR" fileName="logs/${FILE_NAME}-ERROR.log"
filePattern="log/${FILE_NAME}-ERROR_%d{yyyy-MM-dd}_%i.log.gz">
<Filters>
<ThresholdFilter level="FATAL" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="1MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
<!--系統(tǒng)級(jí)別的錯(cuò)誤信息-->
<RollingRandomAccessFile name="FATAL" fileName="logs/${FILE_NAME}-FATAL.log"
filePattern="log/${FILE_NAME}-FATAL%d{yyyy-MM-dd}_%i.log.gz">
<Filters>
<ThresholdFilter level="FATAL" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="1MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
<!--全部日志信息:DEBUG及以上級(jí)別-->
<RollingRandomAccessFile name="ALL" fileName="logs/${FILE_NAME}-ALL.log"
filePattern="log/${FILE_NAME}-ALL%d{yyyy-MM-dd}_%i.log.gz">
<Filters>
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1"/>
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
<DefaultRolloverStrategy max="20"/>
</RollingRandomAccessFile>
<!--配置異步寫(xiě)日志-->
<Async name="Async">
<AppenderRef ref="ALL"/>
</Async>
<!--輸出到MongoDB中-->
<NoSql name="databaseAppender">
<MongoDb databaseName="test" collectionName="errorlog" server="localhost" port="27017"/>
</NoSql>
</Appenders>
<!--然后定義logger谁帕,只有定義了logger并引入的appender峡继,appender才會(huì)生效-->
<Loggers>
<!--監(jiān)控系統(tǒng)信息-->
<Logger name="org.springframework" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
<!--輸出到NoSQL中-->
<Logger name="mongoLog" level="trace" additivity="false">
<AppenderRef ref="databaseAppender"/>
</Logger>
<Root level="debug">
<!-- 這兒為trace表示什么都可以打印出來(lái)了,其他幾個(gè)級(jí)別分別為:TRACE、DEBUG匈挖、INFO碾牌、WARN、ERROR和FATAL -->
<Appender-Ref ref="Console"/>
<Appender-Ref ref="INFO"/>
<Appender-Ref ref="ERROR"/>
<Appender-Ref ref="FATAL"/>
</Root>
</Loggers>
</Configuration>
我是ElyarAnwar儡循,在技術(shù)的道路上摸爬滾打舶吗;
熱愛(ài)生活,熱愛(ài)技術(shù)择膝;如果喜歡記得點(diǎn)贊誓琼;