logback

springboot+logback+logstash日志收集

放肆的年华 提交于 2020-01-10 10:53:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 适用人群 运维人员 熟练操作docker和对elk有基本认识的人 由于本文涉及到的知识众多,且并没有加以描述,所以 小白慎看 操作步骤如下 部署logstash 在springboot项目中引入net.logstash.logback:logstash-logback-encoder包 配置logback-spring.xml 部署logstash 笔者使用的是docker-compose部署logstash(docker同理,读者可自行转换) 先创建三个文件 logstash.conf logstash.yml docker-compose.yml 配置如下: # logstash.conf input { tcp { # 笔者启用了多个logstash,所以此处没有使用logstash的默认端口,读者也可按喜好配置 port => 5045 codec => "json_lines" } } output { elasticsearch { # hosts => "ip:端口" hosts => "elk:9200" # appname在logback中配置,前缀"logstash-logback"读者也可自定配置 index => "logstash-logback-%{[appname]}-%{

SpringBoot基于Aop自定义Slf4j日志输出格式

余生颓废 提交于 2020-01-09 20:11:04
需求 当线上服务或者接口出现异常之后,第一时间需要做的就是追踪日志,找出问题到底出现在哪里,但是在现有的分布式及微服务的背景下,一个请求的调用链往往比较的长,所以一般情况下会选择使用一个请求的唯一ID输出为日志,然后便于日常运维过程的问题追踪,如何优雅自如的自定义一个log输出呢?下面使用AOP加上logback来给一个简单优雅的方式;解放双手,告别体力活。 Aop 这里不做AOP的介绍。除了使用AOP也可以使用Filter去做,不管是AOP还是Filter,目的就是在请求来的时候将其拦住,然后往MDC中塞入自定义的一一些属性,即可实现自定义的变量输出 何为MDC? 这里的MDC就是一个工具类,其本质就是使用 ThreadLocal 将自定义的变量存储起来,这么一说相信各位就知道这个自定义参数的套路了;请求之前将请求拦截,将自定义的属性值存进去;业务过程中,如果打印日志,就将本地ThreadLocal中自定义的属性一起输出。其实原理就这么简单,具体要如何输出,要输出什么,就得看你自己的骚操作了!!! 配置 logback-spring.xml <?xml version="1.0" encoding="UTF-8"?> <configuration debug="true" scan="true" scanPeriod="30 seconds"> <!--

Can I disable an appender in logback?

我怕爱的太早我们不能终老 提交于 2020-01-09 19:53:27
问题 Can I disable an appender in logback on the xml config? I have my configuration and I want to put two appenders, one for database and other for text logs, but only one must be activated. thanks! 回答1: Not sure why you want to deactivate an appender, what are you trying to achieve by disabling. There are some ways to achieve it Add the appender in logback.xml and keep it commented. When you like to enable it then uncomment the appender and reload logback configuration (http://logback.qos.ch

minMINA(4)------用手机通讯APP与MINA服务器进行简单通讯代码集成springboot(非WEB)

一笑奈何 提交于 2020-01-08 16:04:46
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在上一帖的代码基础上集成spring boot,具体修改的地方: 1)myhandler.java文件中 @Component public class MyHandler extends IoHandlerAdapter 2) MinaServer.java文件中 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) public class MinaServer implements ApplicationRunner { static int PORT=7080; //Mina三个主要的部分之一是IoService,其中服务器端实现IoService的是IoAcceptor,客户端实现IoService的是IoConnector //IoAcceptor和IoConnector都分别有实现TCP/IP,UDP/IP及虚拟机管道通讯的子接口 static IoAcceptor accept = null; // AbstractIoService 是IoService接口的适配层,是一个abstact class // AbstractIoAcceptor 也是一个适配器,是一个 abstactr class

MINA(3)------用手机通讯APP与MINA服务器进行简单通讯代码

风格不统一 提交于 2020-01-08 15:22:50
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 服务器端主程序及IoHandler业务程序: public class MinaServer { static int PORT=7080; //Mina三个主要的部分之一是IoService,其中服务器端实现IoService的是IoAcceptor,客户端实现IoService的是IoConnector //IoAcceptor和IoConnector都分别有实现TCP/IP,UDP/IP及虚拟机管道通讯的子接口 static IoAcceptor accept = null; // AbstractIoService 是IoService接口的适配层,是一个abstact class // AbstractIoAcceptor 也是一个适配器,是一个 abstactr class ,只不过是继承自AbstarctIoService // IoHandler是mina的三个主要部分之一,这主要定义了session相关的接口(create,open,status,idle),异常(exceptionCaught)及数据发送和接收接口(messageReceive,messageSend) // IoHandlerAdapter是一个适配器,也是一个abstract class ,实现了IoHandler的接口

Log4j或者Logback的NDC和MDC功能

大兔子大兔子 提交于 2020-01-07 19:13:22
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> log4j用于存储上下文信息(context information)的两个重要的类NDC(Nested Diagnostic Context)和MDC(Mapped Diagnositc Context). NDC采用栈的机制存储上下文,是线程独立的,子线程会从父线程拷贝上下文。 开始调用 NDC.push(message); 删除栈顶消息 NDC.pop(); 清除全部的消息,必须再线程退出前显示的调用,否则会导致内存溢出。 NDC.remove(); 输出模板:l og4j.appender.stdout.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ssS}] [%x] : %m%n MDC采用Map的方式存储上下文,是线程独立的,子线程会从父线程拷贝上下文。 MDC.put(key, value); MDC.get(key); MDC.remove(key); 输出模板:log4j.appender.consoleAppender.layout.ConversionPattern = %-4r [%t] %5p %c %x - %m - %X{key} %n Use %X Map中全部数据 Use %X{key} 指定输出Map中的key的值 Use %x

slf4j 是怎么绑定具体的日志框架的

两盒软妹~` 提交于 2020-01-07 18:57:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> SLF4J 英文全称是 Simple Logging Facade for Java, 是一个门面(外观)接口或者说各种日志框架的抽象,比如 java.util.logging, logback, log4j 等;使用这货,我们可以不用关心具体的实现,也就是说可以随时切换日志框架。 这边使用的是目前最新版本的 slf4j 1.8.0-beta2 简单使用下试试 示例代码 https://github.com/minorpoet/logging-slf4j 添加依赖 dependencies { compile group: 'org.slf4j', name: 'slf4j-api', version: '1.8.0-beta2' } 使用 package pri.holysu.logging.sl4j; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class HelloWorld { public static void main(String[] args) { Logger logger = LoggerFactory.getLogger(HelloWorld.class); logger.info("hello

slf4j、jcl、jul、log4j1、log4j2、logback大总结

删除回忆录丶 提交于 2020-01-07 15:56:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> #1 系列目录# 2种日志接口框架,4种日志实现框架 jdk-logging、log4j、logback日志介绍及原理 jcl与jul、log4j1、log4j2、logback的集成原理 slf4j与jul、log4j1、log4j2、logback的集成原理 slf4j、jcl、jul、log4j1、log4j2、logback大总结 slf4j + log4j原理实现及源码分析 Apache Log4j Log4j架构分析与实战 Log4J配置文件详解 Apache Commons Logging Commons Logging 架构分析 JDK Logging JDK Logging 深入分析 Logback 从Log4j迁移到LogBack的理由 Logback 深入分析 Apache Log4j2 Log4j2架构分析与实战 Log4j2配置文件详解 #2 各种jar包总结# log4j1: log4j:log4j1的全部内容 log4j2: log4j-api:log4j2定义的API log4j-core:log4j2上述API的实现 logback: logback-core:logback的核心包 logback-classic: logback实现了slf4j的API commons

no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]

时间秒杀一切 提交于 2020-01-07 14:38:02
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天down了一个开源项目,启动后一直存在如下错误信息: ERROR in ch.qos.logback.core.joran.spi.Interpreter@26:42 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@27:50 - no applicable action for [logger], current ElementPath is [[configuration][springProfile][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@30:35 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@31:50 - no

logback日志

怎甘沉沦 提交于 2020-01-07 12:41:05
<?xml version="1.0" encoding="UTF-8" ?> <configuration scan="true" scanPeriod="60 seconds" debug="false"> <contextName>logback</contextName> <property name="log.path" value="log" /> <!--输出到控制台--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!--输出到文件--> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--D:\\log\\logback.%d{yyyy-MM-dd}