提供一个目前个人供词使用的,无需日志汇总的日志配置文件:

 <?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="10 seconds" debug="true" packagingData="false"> <contextName>xxx</contextName>
<!-- 状态监听器 -->
<!--<statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />--> <!-- 日志级别变更穿透 -->
<contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator" /> <!-- drop duplicate message -->
<turboFilter class="ch.qos.logback.classic.turbo.DuplicateMessageFilter"/> <!--<property scope="context" name="logEnv" value="${log.env}" />-->
<property scope="context" resource="log.properties" />
<!--<property scope="context" name="log.file.path" value="/usr/local/logs" />-->
<!--<property scope="context" name="smtp.enable" value="true" />-->
<!--<property scope="context" name="smtp.host" value="smtp.126.com" />-->
<!--<property scope="context" name="smtp.port" value="25" />-->
<!--<property scope="context" name="smtp.username" value="xxx@126.com" />-->
<!--<property scope="context" name="smtp.password" value="xxx" />-->
<!--<property scope="context" name="smtp.from" value="xxx@126.com" />-->
<!--<property scope="context" name="smtp.to" value="xxx@126.com" />-->
<!--<property scope="context" name="max.history" value="30" />-->
<!--<property scope="context" name="file.html.size" value="512MB" />-->
<!--<property scope="context" name="file.html.enable" value="true" />--> <!-- 多应用区分 -->
<!--<timestamp key="byDay" datePattern="yyyyMMdd" timeReference="contextBirth" />--> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%green(%d{yyyy-MM-dd HH:mm:ss.SSS}) %magenta([%thread]) %highlight(%-5level) %cyan(%logger{36}) - %msg%n</pattern>
</encoder>
</appender> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.file.path}/query.log</file>
<append>true</append>
<!-- set immediateFlush to false for much higher logging throughput -->
<immediateFlush>true</immediateFlush> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${log.file.path}/query.%d{yyyy-MM-dd}.log.gz</fileNamePattern> <!-- keep 30 days' worth of history capped at 3GB total size -->
<maxHistory>${max.history:-30}</maxHistory>
<!--<totalSizeCap>3GB</totalSizeCap>--> </rollingPolicy> <!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <appender name="HTML_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.file.path}/query.jsp</file>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
<expression>
${file.html.enable} =~ /true/
</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${log.file.path}/query.%d{yyyy-MM-dd}.%i.html</fileNamePattern>
<maxFileSize>${file.html.size:-512MB}</maxFileSize>
<maxHistory>1</maxHistory>
<totalSizeCap>${file.html.size:-512MB}</totalSizeCap>
</rollingPolicy>
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="ch.qos.logback.classic.html.HTMLLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg</pattern>
</layout>
</encoder>
</appender> <!-- marker email send -->
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<!-- event描述信息 -->
<discriminator class="ch.qos.logback.classic.sift.MDCBasedDiscriminator">
<key>host</key>
<defaultValue>none</defaultValue>
</discriminator>
<!-- email -->
<smtpHost>${smtp.host}</smtpHost>
<smtpPort>${smtp.port}</smtpPort>
<username>${smtp.username}</username>
<password>${smtp.password}</password>
<to>${smtp.to}</to>
<from>${smtp.from}</from>
<subject>【ERROR】: %logger{0} from %X{host}</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date %-5level %logger{35} - %message%n</pattern>
</layout>
<filter class="ch.qos.logback.core.filter.EvaluatorFilter">
<evaluator class="ch.qos.logback.classic.boolex.GEventEvaluator">
<expression>
${smtp.enable} =~ /true/
</expression>
</evaluator>
<OnMismatch>DENY</OnMismatch>
<OnMatch>ACCEPT</OnMatch>
</filter>
<evaluator class="ch.qos.logback.classic.boolex.OnMarkerEvaluator">
<marker>NOTIFY</marker>
<!-- you specify add as many markers as you want -->
<!--<marker>TRANSACTION_FAILURE</marker>-->
</evaluator>
<cyclicBufferTracker class="ch.qos.logback.core.spi.CyclicBufferTracker">
<!-- send just one log entry per email -->
<bufferSize>1</bufferSize>
</cyclicBufferTracker>
</appender> <appender name="ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.file.path}/query-error.log</file>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${log.file.path}/query-error.%d{yyyy-MM-dd}.log.gz</fileNamePattern>
<maxHistory>${max.history:-30}</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender> <logger name="com.qding" level="${log.level:-info}">
<appender-ref ref="ERROR" />
</logger> <root level="${log.level:-info}">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
<appender-ref ref="HTML_FILE" />
<appender-ref ref="EMAIL" />
</root>
<!--<if condition='p("logEnv").contains("dev")'>-->
<!--<then>-->
<!--<root level="info">-->
<!--<appender-ref ref="STDOUT" />-->
<!--</root>-->
<!--</then>-->
<!--<else>-->
<!--<root level="debug">-->
<!--<appender-ref ref="STDOUT" />-->
<!--</root>-->
<!--</else>-->
<!--</if>--> </configuration>

jar包的maven依赖:

         <dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-access</artifactId>
<version>1.2.3</version>
</dependency> <!-- 日志切换 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.12</version>
</dependency>
<dependency>
<groupId>org.logback-extensions</groupId>
<artifactId>logback-ext-spring</artifactId>
<version>0.1.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.janino</groupId>
<artifactId>janino</artifactId>
<version>3.0.7</version>
</dependency>

最新文章

  1. TPS04-J. 使用线程池时确保ThreadLocal变量每次都初始化
  2. 【CodeForces 602A】C - 特别水的题3-Two Bases
  3. Google Protocol Buffer 的使用和原理
  4. php使用过滤器filter_var轻松验证邮箱url和ip地址等
  5. Qt Creator调试
  6. C++ Primer 学习笔记_67_面向对象编程 --转换与继承、复制控制与继承
  7. YII设置用户访问过滤
  8. ☀【jQuery插件】DOM 延迟渲染
  9. EasyUI-在行内进行表格的增删改操作
  10. 末学者笔记--shell编程上 1 玄
  11. MongoDb安装和快速入门
  12. ansible基础命令实例
  13. SQL 必知必会&#183;笔记&lt;5&gt;创建计算字段
  14. 【C++】拷贝构造函数(深拷贝,浅拷贝)详解
  15. oracle 与其他数据库如mysql的区别
  16. word2vec原理推导与代码分析
  17. postman发送json请求
  18. github小白上传本地代码及更新代码到GitHub及华为云教程
  19. 百度知道里关于C++的讨论
  20. redis持久化的两种方式

热门文章

  1. java servlet中上传文件的简单实现(基于第三方jar)
  2. 摇一摇js代码
  3. 【JavaScript专题】--- 立即执行函数表达式
  4. C调用Lua中的函数解析table
  5. myBatis中使用Map进行遍历
  6. SpringBoot学习笔记(3):静态资源处理
  7. 扩展 Yii2 自带的日志组件
  8. 第七篇、os、sys、random、time、datetime、logging
  9. Linux电源管理(5)_Hibernate和Sleep功能介绍【转】
  10. DIV+CSS专题:第一天 XHTML CSS基础知识