添加依赖

    <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>
 

Maven 项目中使用 logback的更多相关文章

  1. SLF4J 和 Logback 在 Maven 项目中的使用方法

    原文:http://blog.csdn.net/llmmll08/article/details/70217120 本文介绍 SLF4J 和 Logback 在 Maven 项目中的用法,包括日志框架 ...

  2. 如何查看Maven项目中的jar包依赖树情况

    对于开发人员,我想大家对于Maven应该不会陌生吧,如何在一个Maven项目中对这个项目中所引用的第三方jar包有个直观的了解呢? 其实实现很简单,只需要借助于Maven的一条命令,如下所示: mvn ...

  3. 在maven项目中解决第三方jar包依赖的问题

    在maven项目中,对于那些在maven仓库中不存在的第三方jar,依赖解决通常有如下解决方法: 方法1:直接将jar包拷贝到项目指定目录下,然后在pom文件中指定依赖类型为system,如: < ...

  4. Java项目和maven项目中如何获取&设置配置文件中的属性

    通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...

  5. Maven项目中,系统设置的CLASSPATH环境变量问题

    在Maven项目中,系统的CLASSPATH环境变量失效了吗?在用Maven开发登录网站时,servlet-api出现错误,jdbc也出现错误,都是ClassNotFoundException,但这两 ...

  6. 在SpringBoot项目中添加logback的MDC

    在SpringBoot项目中添加logback的MDC     先看下MDC是什么 Mapped Diagnostic Context,用于打LOG时跟踪一个“会话“.一个”事务“.举例,有一个web ...

  7. Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图(转载)

    Intellij IDEA 中如何查看maven项目中所有jar包的依赖关系图 2017年04月05日 10:53:13 李学凯 阅读数:104997更多 所属专栏: Intellij Idea   ...

  8. JAVA项目中引用Logback的方法

    一.简介 本文主要讲JAVA项目中引入Logback的方法. 二.解决 1.引入依赖. <!--Begin LogBack Log--> <!-- https://mvnreposi ...

  9. maven项目中利用jmeter-maven-plugin插件直接执行jmeter jmx脚本

    jmeter脚本需要执行脚本,先得下载jmeter并解压jmeter.如想在maven项目中通过mvn install 直接执行jmx文件,这样就能在测试服务器上通过一个命令就能执行下性能测试了,给自 ...

随机推荐

  1. Go递归

    1. 递归介绍 package main import ( "fmt" ) func test(n int) { if n > 2 { n-- test(n) } fmt.P ...

  2. 【使用python urllib时出现[SSL: CERTIFICATE_VERIFY_FAILED]报错的解决方案】

    "首先,这个报错是告诉你,你的证书有问题. 其次,出现这个问题的原因,在于Python本身. 问题原因 Python升级到2.7.9以后,引入了一个新特性. 当使用urllib打开https ...

  3. js和jsp中怎么去获取后台 model.addAttribute()存入的list<。。。>对象

    java 后台List productionGroupList =getProductionGroupList(); model.addAttribute("productionGroupL ...

  4. JEECG用户录入时用户账号长度修改

    JEECG用户账号默认长度为10字符,但实际运用中很大可能大于10字符. 解决方法: 1.找到\webpage\system\user\user.jsp文件 <input id="us ...

  5. C语言报错:“gets”: 找不到标识符。解决方法

    C语言报错:“gets”: 找不到标识符. 把“gets”改成“gets_s”即可.

  6. 刷题11. Container With Most Water

    一.题目说明 11.Container With Most Water,这个题目难度是Medium. 二.我的做法 乍一看,简单啊,两个for循环就可以了,我在本地写的. #include<io ...

  7. Selenium元素定位之页面检测技巧

    我们在进行web自动化测试的时候进行XPath或者CSS定位,需要检测页面元素定位是否正确,如果用脚本去检测,那么效率是极低的. 一般网上推选装额外的插件来实现页面元素定位检测 如:firebug. ...

  8. AT24C02芯片学习记录

    1.首先看AT24C02芯片的引脚说明 2.芯片的型号与存储容量(bit)的对应关系: 3.总线时序 我对时序的理解: 时钟线分两种:一种是外部时钟源控制时钟线低电平持续多久高电平持续多久,就像串口: ...

  9. 创业学习---《调研黑客上:锁定调研目标》--D-2.调研模块---HHR计划---以太一堂

    第一,开始学习: 思考题: (1)你的项目有哪些值得关注的竞争对手?为什么是这些,你是如何分类的? (2)拿出其中一个产品,你会怎么分析他? 第一,<明确调研目标>(补充) 1,调研4大类 ...

  10. 科技股 - 5G、芯片、半导体 细分龙头

    5G.芯片.半导体 细分龙头 来源:头条-南山话投资 1.射频芯片:卓胜微 2.存储芯片设计:兆易创新 3.GPU:景嘉微 4.模拟电路芯片:圣邦股份 5.半导体分立器件:扬杰科技 6.晶圆代工:中芯 ...