| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?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-wecom】【Error】: %logger" />
- <property name="app_name" value="linkwe-wecom"/>
- <!-- 日志根目录-->
- <springProperty scope="context" name="log.path" source="logging.path"
- defaultValue="./logs/linkwe-wecom"/>
- <!-- 控制台输出 -->
- <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>
|