|
@@ -0,0 +1,202 @@
|
|
|
|
|
+<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
+<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
|
|
|
|
+ <!-- 日志输出格式 -->
|
|
|
|
|
+ <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS,CTT} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 邮件 -->
|
|
|
|
|
+ <!-- SMTP server的地址,必需指定。如网易的SMTP服务器地址是: smtp.163.com -->
|
|
|
|
|
+ <property name="smtpHost" value="smtp.163.com"/><!--填入要发送邮件的smtp服务器地址-->
|
|
|
|
|
+ <!-- SMTP server的端口地址。默认值:25 -->
|
|
|
|
|
+ <property name="smtpPort" value="25"/>
|
|
|
|
|
+ <!-- 发送邮件账号,默认为null -->
|
|
|
|
|
+ <property name="username" value="*"/><!--发件人账号-->
|
|
|
|
|
+ <!-- 发送邮件密码,默认为null -->
|
|
|
|
|
+ <property name="password" value="*"/><!--发件人密码-->
|
|
|
|
|
+ <!-- 如果设置为true,appender将会使用SSL连接到日志服务器。默认值:false -->
|
|
|
|
|
+ <property name="SSL" value="true"/>
|
|
|
|
|
+ <!-- 指定发送到那个邮箱,可设置多个<to>属性,指定多个目的邮箱 -->
|
|
|
|
|
+ <property name="email_to" value="*"/>
|
|
|
|
|
+ <!--收件人账号多个可以逗号隔开-->
|
|
|
|
|
+ <!-- 指定发件人名称。如果设置成“<ADMIN> ”,则邮件发件人将会是“<ADMIN> ” -->
|
|
|
|
|
+ <property name="email_from" value="1" />
|
|
|
|
|
+ <!-- 指定emial的标题,它需要满足PatternLayout中的格式要求。如果设置成“Log: %logger - %msg ”,就案例来讲,则发送邮件时,标题为“【Error】: com.foo.Bar - Hello World ”。 默认值:"%logger{20} - %m". -->
|
|
|
|
|
+ <property name="email_subject" value="【linkwechat-wx-api】【Error】: %logger" />
|
|
|
|
|
+
|
|
|
|
|
+ <property name="app_name" value="linkwe-wx-api"/>
|
|
|
|
|
+ <!-- 日志根目录-->
|
|
|
|
|
+ <springProperty scope="context" name="log.path" source="logging.path"
|
|
|
|
|
+ defaultValue="./logs/linkwe-wx-api"/>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 控制台输出 -->
|
|
|
|
|
+ <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
|
|
|
|
+ <encoder>
|
|
|
|
|
+ <pattern>${log.pattern}</pattern>
|
|
|
|
|
+ </encoder>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 系统日志输出 -->
|
|
|
|
|
+ <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
|
|
|
|
|
+ <appender name="file_debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
+ <file>${log.path}/debug/${app_name}.debug.log</file>
|
|
|
|
|
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
+ <!-- rollover daily -->
|
|
|
|
|
+ <fileNamePattern>${log.path}/debug/${app_name}_%d{yyyy-MM-dd}.debug.%i.log</fileNamePattern>
|
|
|
|
|
+ <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
|
|
|
|
|
+ <maxFileSize>50MB</maxFileSize>
|
|
|
|
|
+ <maxHistory>30</maxHistory>
|
|
|
|
|
+ <totalSizeCap>10GB</totalSizeCap>
|
|
|
|
|
+ </rollingPolicy>
|
|
|
|
|
+ <encoder>
|
|
|
|
|
+ <pattern>${log.pattern}</pattern>
|
|
|
|
|
+ </encoder>
|
|
|
|
|
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
+ <level>DEBUG</level>
|
|
|
|
|
+ <onMatch>ACCEPT</onMatch>
|
|
|
|
|
+ <onMismatch>DENY</onMismatch>
|
|
|
|
|
+ </filter>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+ <!-- 异步输出 -->
|
|
|
|
|
+ <appender name="arollingfile_debug" class="ch.qos.logback.classic.AsyncAppender">
|
|
|
|
|
+ <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
|
|
|
|
+ <discardingThreshold>0</discardingThreshold>
|
|
|
|
|
+ <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
|
|
|
|
|
+ <queueSize>1</queueSize>
|
|
|
|
|
+ <!-- 添加附加的appender,最多只能添加一个 -->
|
|
|
|
|
+ <appender-ref ref="file_debug"/>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
|
|
|
|
|
+ <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
+ <file>${log.path}/info/${app_name}.info.log</file>
|
|
|
|
|
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
+ <!-- rollover daily -->
|
|
|
|
|
+ <fileNamePattern>${log.path}/info/${app_name}_%d{yyyy-MM-dd}.info.%i.log</fileNamePattern>
|
|
|
|
|
+ <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
|
|
|
|
|
+ <maxFileSize>50MB</maxFileSize>
|
|
|
|
|
+ <maxHistory>30</maxHistory>
|
|
|
|
|
+ <totalSizeCap>10GB</totalSizeCap>
|
|
|
|
|
+ </rollingPolicy>
|
|
|
|
|
+ <encoder>
|
|
|
|
|
+ <pattern>${log.pattern}</pattern>
|
|
|
|
|
+ </encoder>
|
|
|
|
|
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
+ <level>INFO</level>
|
|
|
|
|
+ <onMatch>ACCEPT</onMatch>
|
|
|
|
|
+ <onMismatch>DENY</onMismatch>
|
|
|
|
|
+ </filter>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+ <!-- 异步输出 -->
|
|
|
|
|
+ <appender name="arollingfile_info" class="ch.qos.logback.classic.AsyncAppender">
|
|
|
|
|
+ <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
|
|
|
|
+ <discardingThreshold>0</discardingThreshold>
|
|
|
|
|
+ <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
|
|
|
|
|
+ <queueSize>1</queueSize>
|
|
|
|
|
+ <!-- 添加附加的appender,最多只能添加一个 -->
|
|
|
|
|
+ <appender-ref ref="file_info"/>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
|
|
|
|
|
+ <appender name="file_warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
+ <file>${log.path}/warn/${app_name}.warn.log</file>
|
|
|
|
|
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
+ <!-- rollover daily -->
|
|
|
|
|
+ <fileNamePattern>${log.path}/warn/${app_name}_%d{yyyy-MM-dd}.warn.%i.log</fileNamePattern>
|
|
|
|
|
+ <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
|
|
|
|
|
+ <maxFileSize>50MB</maxFileSize>
|
|
|
|
|
+ <maxHistory>30</maxHistory>
|
|
|
|
|
+ <totalSizeCap>10GB</totalSizeCap>
|
|
|
|
|
+ </rollingPolicy>
|
|
|
|
|
+ <encoder>
|
|
|
|
|
+ <pattern>${log.pattern}</pattern>
|
|
|
|
|
+ </encoder>
|
|
|
|
|
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
+ <level>WARN</level>
|
|
|
|
|
+ <onMatch>ACCEPT</onMatch>
|
|
|
|
|
+ <onMismatch>DENY</onMismatch>
|
|
|
|
|
+ </filter>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+ <!-- 异步输出 -->
|
|
|
|
|
+ <appender name="arollingfile_warn" class="ch.qos.logback.classic.AsyncAppender">
|
|
|
|
|
+ <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
|
|
|
|
+ <discardingThreshold>0</discardingThreshold>
|
|
|
|
|
+ <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
|
|
|
|
|
+ <queueSize>1</queueSize>
|
|
|
|
|
+ <!-- 添加附加的appender,最多只能添加一个 -->
|
|
|
|
|
+ <appender-ref ref="file_warn"/>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 循环文件输出(基于时间戳的分文件,是实际项目中用途最广的一种情况) -->
|
|
|
|
|
+ <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
|
|
|
|
+ <file>${log.path}/error/${app_name}.error.log</file>
|
|
|
|
|
+ <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
|
|
|
|
+ <!-- rollover daily -->
|
|
|
|
|
+ <fileNamePattern>${log.path}/error/${app_name}_%d{yyyy-MM-dd}.error.%i.log</fileNamePattern>
|
|
|
|
|
+ <!-- each file should be at most 100MB, keep 60 days worth of history, but at most 20GB -->
|
|
|
|
|
+ <maxFileSize>50MB</maxFileSize>
|
|
|
|
|
+ <maxHistory>30</maxHistory>
|
|
|
|
|
+ <totalSizeCap>10GB</totalSizeCap>
|
|
|
|
|
+ </rollingPolicy>
|
|
|
|
|
+ <encoder>
|
|
|
|
|
+ <pattern>${log.pattern}</pattern>
|
|
|
|
|
+ </encoder>
|
|
|
|
|
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
+ <level>ERROR</level>
|
|
|
|
|
+ <onMatch>ACCEPT</onMatch>
|
|
|
|
|
+ <onMismatch>DENY</onMismatch>
|
|
|
|
|
+ </filter>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+ <!-- 异步输出 -->
|
|
|
|
|
+ <appender name="arollingfile_error" class="ch.qos.logback.classic.AsyncAppender">
|
|
|
|
|
+ <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
|
|
|
|
|
+ <discardingThreshold>0</discardingThreshold>
|
|
|
|
|
+ <!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
|
|
|
|
|
+ <queueSize>1</queueSize>
|
|
|
|
|
+ <!-- 添加附加的appender,最多只能添加一个 -->
|
|
|
|
|
+ <appender-ref ref="file_error"/>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- ERROR邮件发送 -->
|
|
|
|
|
+ <appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
|
|
|
|
|
+ <smtpHost>${smtpHost}</smtpHost>
|
|
|
|
|
+ <smtpPort>${smtpPort}</smtpPort>
|
|
|
|
|
+ <username>${username}</username>
|
|
|
|
|
+ <password>${password}</password>
|
|
|
|
|
+ <!-- <asynchronousSending>true</asynchronousSending>-->
|
|
|
|
|
+ <SSL>${SSL}</SSL>
|
|
|
|
|
+ <!--<STARTTLS>true</STARTTLS>-->
|
|
|
|
|
+ <to>${email_to}</to>
|
|
|
|
|
+ <from>${email_from}</from>
|
|
|
|
|
+ <subject>${email_subject}</subject>
|
|
|
|
|
+ <!-- html格式-->
|
|
|
|
|
+ <layout class="ch.qos.logback.classic.html.HTMLLayout">
|
|
|
|
|
+ <Pattern>%date%level%thread%logger{0}%line%message</Pattern>
|
|
|
|
|
+ </layout>
|
|
|
|
|
+ <!-- 这里采用等级过滤器 指定等级相符才发送 -->
|
|
|
|
|
+ <filter class="ch.qos.logback.classic.filter.LevelFilter">
|
|
|
|
|
+ <level>ERROR</level>
|
|
|
|
|
+ <onMatch>ACCEPT</onMatch>
|
|
|
|
|
+ <onMismatch>DENY</onMismatch>
|
|
|
|
|
+ </filter>
|
|
|
|
|
+ <cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
|
|
|
|
|
+ <!-- 每个电子邮件只发送一个日志条目 -->
|
|
|
|
|
+ <bufferSize>1</bufferSize>
|
|
|
|
|
+ </cyclicBufferTracker>
|
|
|
|
|
+ </appender>
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 系统模块日志级别控制 -->
|
|
|
|
|
+ <logger name="cn.linkwechat" level="info" />
|
|
|
|
|
+ <!-- Spring日志级别控制 -->
|
|
|
|
|
+ <logger name="org.springframework" level="warn" />
|
|
|
|
|
+
|
|
|
|
|
+ <!--系统操作日志-->
|
|
|
|
|
+ <root level="info">
|
|
|
|
|
+ <appender-ref ref="console" />
|
|
|
|
|
+ <appender-ref ref="arollingfile_debug" />
|
|
|
|
|
+ <appender-ref ref="arollingfile_info" />
|
|
|
|
|
+ <appender-ref ref="arollingfile_warn" />
|
|
|
|
|
+ <appender-ref ref="arollingfile_error" />
|
|
|
|
|
+ <!-- <appender-ref ref="alarm_error" />-->
|
|
|
|
|
+ <appender-ref ref="EMAIL" />
|
|
|
|
|
+ </root>
|
|
|
|
|
+</configuration>
|