1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
| <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="30 seconds" debug="true" packagingData="true"> <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener"/>
<!--<include resource="org/springframework/boot/logging/logback/base.xml"/>--> <contextName>SpringBoot</contextName> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_NAME" value="/home"/> <property name="LOG_PATH" value="logs"/> <!--设置系统日志目录--> <property name="APP_DIR" value="SpringBoot"/>
<!-- 说明: 1、日志级别及文件 日志记录采用分级记录,级别与日志文件名相对应,不同级别的日志信息记录到不同的日志文件中 例如:error级别记录到log_error_xxx.log或log_error.log(该文件为当前记录的日志文件),而log_error_xxx.log为归档日志, 日志文件按日期记录,同一天内,若日志文件大小等于或大于2M,则按0、1、2...顺序分别命名 例如log-level-2013-12-21.0.log 其它级别的日志也是如此。 2、文件路径 若开发、测试用,在Eclipse中运行项目,则到Eclipse的安装路径查找logs文件夹,以相对路径../logs。 若部署到Tomcat下,则在Tomcat下的logs文件中 3、Appender FILE_ERROR对应error级别,文件名以log-error-xxx.log形式命名 FILE_WARN对应warn级别,文件名以log-warn-xxx.log形式命名 FILE_INFO对应info级别,文件名以log-info-xxx.log形式命名 FILEDEBUG对应debug级别,文件名以log-debug-xxx.log形式命名 CONSOLE将日志信息输出到控制上,为方便开发测试使用 --> <!-- %m输出的信息,%p日志级别,%t线程名,%d日期,%c类的全名,,,, --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!--<pattern>%d %p (%file:%line\)- %m%n</pattern>--> <!--格式化输出:%d:表示日期 %thread:表示线程名 %-5level:级别从左显示5个字符宽度 %msg:日志消息 %n:是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/${APP_DIR}/log_error.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/${APP_DIR}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, 命名日志文件,例如log-error-2013-12-21.0.log --> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILE_WARN" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/${APP_DIR}/log_warn.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/${APP_DIR}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, 命名日志文件,例如log-error-2013-12-21.0.log --> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志记录器,日期滚动记录 --> <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!-- 正在记录的日志文件的路径及文件名 --> <file>${LOG_PATH}/${APP_DIR}/log_info.log</file> <!-- 日志记录器的滚动策略,按日期,按大小记录 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 归档的日志文件的路径,例如今天是2013-12-21日志,当前写的日志文件路径为file节点指定,可以将此文件与file指定文件路径设置为不同路径,从而将当前日志文件或归档日志文件置不同的目录。 而2013-12-21的日志文件在由fileNamePattern指定。%d{yyyy-MM-dd}指定日期格式,%i指定索引 --> <fileNamePattern>${LOG_PATH}/${APP_DIR}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <!-- 除按日志记录之外,还配置了日志文件不能超过2M,若超过2M,日志文件会以索引0开始, 命名日志文件,例如log-error-2013-12-21.0.log --> <maxFileSize>50MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <!-- 追加方式记录日志 --> <append>true</append> <!-- 日志文件的格式 --> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> <charset>UTF-8</charset> </encoder> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>info</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--日志异步到数据库 --> <appender name="DBAPPENDER" class="ch.qos.logback.classic.db.DBAppender"> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <dataSource class="com.zaxxer.hikari.HikariDataSource"> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <jdbcUrl>jdbc:mysql://192.168.3.206:3306/logback?useUnicode=true&characterEncoding=utf8&useSSL=false</jdbcUrl> <username>joinhealth</username> <password>123456</password> <poolName>HikariPool-logback</poolName> </dataSource> </connectionSource> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>warn</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <!-- 此日志文件只记录info级别的 --> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>error</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern> <charset>UTF-8</charset> </encoder> </appender>
<logger name="cn.joinhealth" level="DEBUG"/> <logger name="org.springframework.data.mybatis" level="DEBUG"/> <logger name="org.springframework.aop.aspectj" level="ERROR"/>
<logger name="javax.activation" level="WARN"/> <logger name="javax.mail" level="WARN"/> <logger name="javax.xml.bind" level="WARN"/> <logger name="ch.qos.logback" level="INFO"/> <logger name="com.codahale.metrics" level="WARN"/> <logger name="com.ryantenney" level="WARN"/> <logger name="com.sun" level="WARN"/> <logger name="com.zaxxer" level="WARN"/> <logger name="io.undertow" level="WARN"/> <logger name="net.sf.ehcache" level="WARN"/> <logger name="org.apache" level="WARN"/> <logger name="org.apache.catalina.startup.DigesterFactory" level="OFF"/> <logger name="org.bson" level="WARN"/> <logger name="org.hibernate.validator" level="WARN"/> <logger name="org.hibernate" level="WARN"/> <logger name="org.hibernate.ejb.HibernatePersistence" level="OFF"/> <logger name="org.springframework.web" level="INFO"/> <logger name="org.springframework.security" level="WARN"/> <logger name="org.springframework.cache" level="WARN"/> <logger name="org.thymeleaf" level="WARN"/> <logger name="org.xnio" level="WARN"/> <logger name="springfox" level="WARN"/> <logger name="sun.rmi" level="WARN"/> <logger name="liquibase" level="WARN"/> <logger name="sun.rmi.transport" level="WARN"/>
<logger name="jdbc.connection" level="ERROR"/> <logger name="jdbc.resultset" level="ERROR"/> <logger name="jdbc.resultsettable" level="INFO"/> <logger name="jdbc.audit" level="ERROR"/> <logger name="jdbc.sqltiming" level="ERROR"/> <logger name="jdbc.sqlonly" level="INFO"/> <!--<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">--> <!--<resetJUL>true</resetJUL>--> <!--</contextListener>--> <!--<springProfile name="production">--> <!--<root level="DEBUG">--> <!--<!–<appender-ref ref="FILE_ERROR"/>–>--> <!--<!–<appender-ref ref="FILE_WARN"/>–>--> <!--<!–<appender-ref ref="FILE_INFO"/>–>--> <!--<!–<appender-ref ref="DBAPPENDER"/>–>--> <!--<appender-ref ref="STDOUT"/>--> <!--</root>--> <!--</springProfile>--> <!--<springProfile name="dev">--> <!--<root level="DEBUG">--> <!--<!–<appender-ref ref="FILE_ERROR"/>–>--> <!--<!–<appender-ref ref="FILE_WARN"/>–>--> <!--<!–<appender-ref ref="FILE_INFO"/>–>--> <!--<!–<appender-ref ref="DBAPPENDER"/>–>--> <!--<appender-ref ref="CONSOLE"/>--> <!--</root>--> <!--</springProfile>-->
<root level="INFO"> <appender-ref ref="FILE_ERROR"/> <appender-ref ref="FILE_WARN"/> <appender-ref ref="FILE_INFO"/> <appender-ref ref="STDOUT"/> </root> </configuration>
|