添加依赖

    <dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.9</version>
</dependency>

resource目录下添加 Logback.xml


<?xml version="1.0" encoding="UTF-8" ?>
<!-- 级别从高到低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志输出规则 根据当前ROOT 级别,日志输出时,级别高于root默认的级别时 会输出 -->
<!-- 以下 每个配置的 filter 是过滤掉输出文件里面,会出现高级别文件,依然出现低级别的日志信息,通过filter 过滤只记录本级别的日志 -->
<!-- scan 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 -->
<!-- scanPeriod 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 --> <configuration scan="true" scanPeriod="60 seconds" debug="false">
<contextName>springboot-security</contextName>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>​
<springProperty scope="context" name="springAppName" source="spring.application.name"/> <!-- 日志输出格式 -->
<property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS}[%X{X-B3-TraceId:-},%X{X-B3-SpanId:-}] [%thread] %-5level %logger{50} - %msg%n"/>
<!-- 定义日志文件 输出位置 -->
<property name="log.home_dir" value="D:\\logs\\sso-appa"/>
<!-- 日志最大的历史 30天 -->
<property name="log.maxHistory" value="30"/>
<!-- 打印debug级别日志及以上级别日志 -->
<property name="log.level" value="debug"/> <!-- ConsoleAppender 控制台输出日志 start -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<encoder>
<pattern>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</pattern>
</encoder>
</appender>
<!-- ConsoleAppender 控制台输出日志 end --> <!-- errorAppender 控制台输出日志 start -->
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 过滤器,只记录WARN级别的日志 -->
<!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
<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">
<!--日志输出位置 可以是相对和绝对路径 -->
<fileNamePattern>
${log.home_dir}/error/%d{yyyy-MM-dd}/errorLog-%i.log
</fileNamePattern>
<!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>是6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
<maxHistory>${log.maxHistory}</maxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 单个log文件超过该大小就会重新建一个log文件 -->
<MaxFileSize>2MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</pattern>
</encoder>
</appender>
<!-- errorAppender 控制台输出日志 end --> <!-- warnAppender 控制台输出日志 start -->
<appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${log.home_dir}/warn/%d{yyyy-MM-dd}/warnLog-%i.log
</fileNamePattern>
<maxHistory>${log.maxHistory}</maxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>2MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</pattern>
</encoder>
</appender>
<!-- warnAppender 控制台输出日志 end --> <!-- infoAppender 控制台输出日志 start -->
<appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.home_dir}/info/%d{yyyy-MM-dd}/infoLog-%i.log</fileNamePattern>
<maxHistory>${log.maxHistory}</maxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>2MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</pattern>
</encoder>
</appender>
<!-- infoAppender 控制台输出日志 end --> <!-- debugAppender 控制台输出日志 start -->
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>DEBUG</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.home_dir}/debug/%d{yyyy-MM-dd}/debugLog-%i.log</fileNamePattern>
<maxHistory>${log.maxHistory}</maxHistory>
<TimeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<MaxFileSize>2MB</MaxFileSize>
</TimeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
<charset>utf8</charset>
</pattern>
</encoder>
</appender>
<!-- debugAppender 控制台输出日志 end --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender> <!--日志发送到logstash=>elasticSearch=>kibana start-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>localhost:9601</destination>
<queueSize>1048576</queueSize>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder" />
</appender> <logger name="kibanaLog" level="DEBUG" additivity="false">
<appender-ref ref="LOGSTASH"/>
</logger>
​<!--日志发送到logstash=>elasticSearch=>kibana end -->

<root>
<level value="${log.level}"/>
<!-- 控制台输出 -->
<appender-ref ref="console"/>
<!-- 文件输出 -->
<appender-ref ref="error"/>
<appender-ref ref="warn"/>
<appender-ref ref="info"/>
<appender-ref ref="debug"/>
</root> <!-- 文件不输出 -->
<Logger name="org.springframework" level="ERROR"></Logger>
<Logger name="org.hibernate" level="ERROR"></Logger>
<Logger name="org.apache" level="ERROR"></Logger>
<Logger name="com.netflix" level="ERROR"></Logger>
<Logger name="ch.qos.logback" level="ERROR"></Logger> </configuration>
 

最新文章

  1. 前端数据可视化echarts.js使用指南
  2. vim 编辑器使用积累(for win)
  3. IOS客户端Coding项目记录导航
  4. nodejs初探(二)第一个nodejs程序“hello world”
  5. libevent (一) socket属性设置与初始化操作
  6. 64位系统安装ODBC驱动的方法
  7. Backbone.js developer 武汉 年薪8w-10w
  8. C# 多线程(lock,Monitor,Mutex,同步事件和等待句柄)
  9. List迭代循环时出现分问题
  10. 结构性产品 Structured Product
  11. 【代码笔记】iOS-4个可以单独点击的button
  12. maven 上传包
  13. vim nginx配置文件时具备语法高亮功能
  14. Google AdWords 广告排名首选项
  15. “全栈2019”Java多线程第二章:创建多线程之继承Thread类
  16. luoguP3648 [APIO2014]序列分割
  17. BufferedInputStream/BufferedOutputStream
  18. [转] Matlab与C++混合编程,添加OpenCV库
  19. Velocity模板引擎介绍
  20. 去掉referer信息

热门文章

  1. dk7和jdk8的一些新特性
  2. web应用程序上传文件 超过了最大请求长度
  3. SQL语句,pymysql模块,sql注入问题
  4. Git添加和克隆远程库
  5. 解决ifarme在ios下无法使用
  6. mysql中utf8字符集的设置及character_set_database属性修改
  7. P1028
  8. 树状数组(fenwick tree)
  9. C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。
  10. Centos610安装MVN