slf4j

日志规范

拥有回忆 提交于 2020-08-04 15:46:04
日志规范 异常类型 异常规范 日志格式 日志规范 异常类型 debug 非常具体的信息,只能用于开发调试使用。部署到生产环境后,这个级别的信息只能保持很短的时间。这些信息只能临时存在,并将最终被关闭。要区分 DEBUG 和 TRACE 会比较困难,对一个在开发及测试完成后将被删除的 LOG输出 ,可能会比较适合定义为T RACE 级别. 2. info 重要的业务处理已经结束。在实际环境中,系统管理员或者高级用户要能理解 INFO 输出的信息并能很快的了解应用正在做什么。比如,一个和处理机票预订的系统,对每一张票要有且只有一条 INFO信 息描述 “ [Who] booked ticket from [Where] to [Where] ”。另外一种对 INFO 信息的定义是:记录显著改变应用状态的每一个 action ,比如:数据库更新、外部系统请求。 3. warn 发生这个级别问题时,处理过程可以继续,但必须对这个问题给予额外关注。这个问题又可以细分成两种情况: 第一种是存在严重的问题但有应急措施(比如数据库不可用,使用Cache); 第二种是潜在问题及建议(ATTENTION)。 比如生产环境的应用运行在 Development 模式下、管理控制台没有密码保护等。系统可以允许这种错误的存在,但必须及时做跟踪检查用户参数错误。可以使用 warn

java bean的拷贝

自闭症网瘾萝莉.ら 提交于 2020-07-29 06:16:29
1.bean copy package com.qimh.springbootfiledemo.utils; import org.apache.poi.ss.formula.functions.T; import java.lang.reflect.Field; /** * @author * bean 复制 */ public class BeanCopy { /** * bean 的拷贝 * @param srcBean--原始bean * @param destClazz--目标class对象 * 这个<T> T 表示的是返回值T是泛型 * T是一个占位符,用来告诉编译器,这个东西先给我留着,等我编译的时候,告诉你。 * https://www.cnblogs.com/jpfss/p/9929108.html */ public static <T> T beanCopy(Object srcBean,Class<T> destClazz) throws IllegalAccessException, InstantiationException, NoSuchFieldException { if (null != srcBean && null != destClazz){ //获取目标bean的实例 T destBean = destClazz.newInstance

spring boot 学习(六)spring boot 各版本中使用 log4j2 记录日志

房东的猫 提交于 2020-07-28 19:58:32
spring boot 各版本中使用 log4j2 记录日志 前言 Spring Boot中默认日志工具是 logback ,只不过我不太喜欢 logback 。为了更好支持 spring boot 框架,我使用 log4j 。 spring boot 各版本与 log4j 的支持情况 1. spring boot 1.2.X 版本 spring boot 1.2.X 版本一般建议使用默认日志工具(logback),也可以使用 log4j。 但,注意的是: Spring Boot 1.2.4.RELEASE 包含一个bug, github上关于该问题的解释 。所以,当你通过 application.properties 定义日志级别时,该错误会更改父记录器级别,在最差情况下会更改根记录器级别。虽然这个bug是修复在 1.2.6.RELEASE ,我建议至少使用 1.2.8.RELEASE (如果你想坚持1.2.x)。 因为 spring boot 现在仍然在快速发展阶段,版本更新较快,有时候就会因为版本问题而出现各种奇奇怪怪的bug。 2. spring boot 1.3.X 版本 spring boot 从 1.3.X 版本开始支持 slf4j + log4j/log4j2 。 * 首先,先解决为什么使用 SL4J Facade? 对于这个问题,网上已经有许多精彩地点答案了

Maven-dependencyManagement 用法

耗尽温柔 提交于 2020-07-28 19:33:12
DepencyManagement应用场景 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理 构建、文档、报告、依赖、scms、发布、分发 的方法。可以方便的 编译代码、进行依赖管理、管理二进制库 等等。 由于我们的模块很多,所以我们又抽象了一层,如下图抽出一个 femicro 来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。 在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。 父类POM配置 继承自springboot-parent 本项目中,父类POM中dependencyManagement配置 <!--依赖管理,用于管理spring-cloud的依赖--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId>

不会用Java Future,我怀疑你泡茶没我快, 又是超长图文!!

我的未来我决定 提交于 2020-07-28 12:42:12
你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough 现陆续将Demo代码和技术文章整理在一起 Github实践精选 ,方便大家阅读查看,本文同样收录在此,觉得不错,还请Star 前言 创建线程有几种方式?这个问题的答案应该是可以脱口而出的吧 继承 Thread 类 实现 Runnable 接口 但这两种方式创建的线程是属于”三无产品“: 没有参数 没有返回值 没办法抛出异常 class MyThread implements Runnable{ @Override public void run() { log.info("my thread"); } } Runnable 接口是 JDK1.0 的核心产物 /** * @since JDK1.0 */ @FunctionalInterface public interface Runnable { public abstract void run(); } 用着 “三无产品” 总是有一些弊端,其中没办法拿到返回值是最让人不能忍的,于是 Callable 就诞生了 Callable 又是 Doug Lea 大师,又是 Java 1.5 这个神奇的版本 /** * @see

ObjectUtils.java

a 夏天 提交于 2020-07-28 12:37:24
import lombok.extern.slf4j.Slf4j; import com.donkeycode.core.io.FastByteArrayOutputStream; import java.io.ByteArrayInputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Array; import java.lang.reflect.InvocationTargetException; import java.util.*; import org.springframework.cglib.beans.BeanCopier; /** * 对象操作工具类 * * @author nanfeng * @date 2019年12月10日 * @since 0.0.1 */ @Slf4j public class ObjectUtils { /** * 比较两个对象是否相等。<br> * 相同的条件有两个,满足其一即可:<br> * <code> * 1. obj1 == null && obj2 == null; * 2. obj1.equals(obj2) * </code> * * @param obj1 *

Spring boot——logback 基础使用篇(一)

我与影子孤独终老i 提交于 2020-07-28 12:25:03
1 简单日志配置 spring boot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如Java Util Logging,Log4J2还有Logback。如果你想用某一种日志框架来进行实现的话,就必须先配置,默认情况下,spring boot使用Logback作为日志实现的框架。 1.1 配置控制台日志的debug级别 默认情况下,spring boot从控制台打印出来的日志级别只有ERROR, WARN 还有INFO,如果你想要打印debug级别的日志,可以通过application.properites配置debug=true debug= true 1.2 在生产环境环境下,你可以通过命令行进行配置日志的debug级别 java -jar C:\Users\Administrator\Desktop\xx\demo.jar --debug 1.3 配置logging.level.*来具体输出哪些包的日志级别 logging.level.root= INFO logging.level.org.springframework.web = DEBUG logging.level.org.hibernate =ERROR 1.4 将日志输出到文件中 默认情况下spring boot是不将日志输出到日志文件中

spring Aop实现防止重复提交

纵然是瞬间 提交于 2020-07-28 11:03:47
1.先定义一个注解 import java.lang.annotation.* ; /** * @desc 定义一个不重复提交的注解 */ @Target({ElementType.PARAMETER, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @ interface NoRepeatCommit { String name() default "name:" ; } 2.实现一个aop import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.reflect.MethodSignature; import org

SpringCloud之Zuul

天大地大妈咪最大 提交于 2020-07-28 03:30:33
使用SpringCloud Zuul实现网关代理。 一、Maven依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> 二、编写配置(application.yml) eureka: client: serviceUrl: defaultZone: http: // localhost:8761/eureka/ server: port: 8769 spring: application: name: blog -zuul- client zuul:

Spring Boot发送邮件

佐手、 提交于 2020-07-28 02:55:45
如何使用Spring Boot发送邮件? Spring Boot为发送邮件提供了starter: spring-boot-starter-mail 。 接下来,我们看看如何用Spring Boot发送邮件。 一、配置邮箱 这里我们使用163网易邮箱 1.开启SMTP服务 2.设置/重置客户端授权密码 二、编码实现 1.添加依赖 1 <!-- mail --> 2 < dependency > 3 < groupId > org.springframework.boot </ groupId > 4 < artifactId > spring-boot-starter-mail </ artifactId > 5 </ dependency > 2.编写配置 1 # mail 2 spring.mail.host=smtp.163 .com 3 spring.mail.username=xxxxxx@163 .com 4 spring.mail.password= xxxxxx 5 spring.mail.from=xxxxxx@163 .com 6 spring.mail.properties.mail.smtp.auth= true 7 spring.mail.properties.mail.smtp.starttls.enable= true 8 spring.mail