当前位置:Gxlcms > 数据库问题 > logback.xml的使用,将日志异步保存到数据库中

logback.xml的使用,将日志异步保存到数据库中

时间:2021-07-01 10:21:17 帮助过:19人阅读

xml version="1.0" encoding="UTF-8"?> <configuration debug="true"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 --> <property name="LOG_HOME" value="/home/logs" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!-- 格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 --> <pattern>%X{ip} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{150} - %msg%n</pattern> </encoder> </appender> <!-- info日志 appender --> <appender name="INFO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <fileNamePattern>${LOG_HOME}//security-info-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>%X{ip} %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 出错日志 appender --> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- 按天回滚 daily --> <!-- log.dir 在maven profile里配置 --> <fileNamePattern>${LOG_HOME}//security-error-%d{yyyy-MM-dd}.log</fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>60</maxHistory> </rollingPolicy> <encoder> <pattern>%X{ip} %d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> <filter class="ch.qos.logback.classic.filter.LevelFilter"><!-- 只打印错误日志 --> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!--日志异步到数据库 --> <appender name="DB" class="ch.qos.logback.classic.db.DBAppender"> <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <dataSource class="org.apache.tomcat.jdbc.pool.DataSource"> <driverClassName>com.mysql.jdbc.Driver</driverClassName> <url>jdbc:mysql://**.***.*.**:3306/log_repository?characterEncoding=UTF-8</url> <username>*****</username> <password>*****</password> </dataSource> </connectionSource> </appender> <!-- 将com.logback.test.dao包下debug级别的sql日志输出到控制台和文件中 --> <!-- additivity属性为false,表示此loger的打印信息不再向上级(root)传递;若为true,则控制台就会输出两遍dao包下的日志 --> <logger name="com.logback.test.dao" level="DEBUG" additivity="false"> <appender-ref ref="STDOUT" /> </logger> <!-- 将com.logback.test包下INFO级别的日志记录到数据库中 --> <logger name="com.logback.test" level="INFO" additivity="true"> <appender-ref ref="DB"/> </logger> <!-- 将所有包下debug级别的日志输出到控制台和文件中 --> <root level="INFO"> <appender-ref ref="STDOUT" /> <appender-ref ref="INFO" /> <appender-ref ref="ERROR"/> </root> </configuration>

在记录日志的时候,我们可能有这种需求,对于每个记录除了知道日志信息外,也要记录访问该系统的IP。

MDC便提供了这个功能,只需要在代码中添加下面的方法即可

MDC.put("ip", ip);

在配置文件中用下面的方式获取即可

%X{ip} 

logback.xml的使用,将日志异步保存到数据库中

标签:格式化输出   thread   mave   source   ash   roo   日志信息   ons   代码   

人气教程排行