slf4j

ssm框架搭建

人盡茶涼 提交于 2020-02-26 05:05:28
整体结构  基本的配置 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>con.zf</groupId> <artifactId>ssm2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>ssm2 Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <!-- <modules>--> <!-- <module>ssm_bean</module>--> <!-- <module>ssm

Java 定义一个日志的时候应该如何定义

本秂侑毒 提交于 2020-02-25 23:27:08
在很多情况下,我们都会使用 SLF4J 来定义日志。 那么如何定义一个 Logger 呢? 相信绝大部分人都会定义为: private static final Logger logger = LoggerFactory.getLogger(BigDecimalDemoUnitTest.class); 但是我们为什么要使用 private static final 来进行修饰呢? private – 没有其他类可以劫持你的日志 static – 因为使用了静态,所以每一个类就只有一个日志,同时可以避免尝试序列化日志 final – 在类的生命周期中,不需要修改日志 同时,你可以定义变量 log 来替代 logger,这样能够减少输入的字符数。当然这个也需要根据你的项目要求来定了。 当然还有下面的一种情况,考察日志代码: protected final Logger log = LoggerFactory.getLogger(getClass()); 上面有关日志的定义与我们的规则是完全相反的。 上面的代码允许你在所有具有继承关系的类中使用相同的日志名(与实际的类名相同)。 例如: 如果类 Bar Extends Foo,那么上面 2 个类的日志将会 log 到 Bar logger 中。 https://blog.ossez.com/archives/3221 来源:

0216 aop和打印数据库执行日志

扶醉桌前 提交于 2020-02-25 20:34:29
需求 maven依赖 <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.8.7</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>28.2-jre</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> <

# 2020 年了,Java 日志框架到底哪个性能好?——技术选型篇

删除回忆录丶 提交于 2020-02-25 15:50:38
大家好,之前写(shui)了两篇其他类型的文章,感觉大家反响不是很好,于是我乖乖的回来更新硬核技术文了。 经过本系列前两篇文章我们了解到日志框架大战随着 SLF4j 的一统天下而落下帷幕,但 SLF4j 仅仅是接口,实现方面, logback 与 log4j2 仍然难分高下,今天我们就来聊一聊,日志框架实现到底是该选择 Log4j2 还是 Logback。这篇文章我们将从功能、API 设计、可扩展性、性能四个方面展开讨论。 生态 老牌的 Log4j2 凭借着入场早、背靠 Apache 两大优势有着不错的用户支持,官网文档也很完善。 新生的 Logback 凭借着 SLF4j 的原生实现以及被 Spring Boot 钦点的日志框架(Spring 也提供了Log4j2 的 starter,切换依赖即可完成更换日志框架,前文讲过,此处不再赘述),同样也拥有着很好的前景。 社区支持方面,Log4j2 作为 Apache 顶级项目,支持度应该是很不错的,Logback 作为Ceki创业后的产物,也能有很好的保证,二者生态可谓不相上下。 功能 日志的功能我们从使用者的角度可以分为:配置、使用、以及独有特性。 配置文件方面,Log4j 提供了更多的配置文件配置方式,Log4j2 支持 properties、YAML、JSON、XML四种,Logback 则支持 XML 与 groovy

SpringBoot-4:SpringBoot日志

别等时光非礼了梦想. 提交于 2020-02-22 01:46:26
文章目录 一. 日志框架 二. SLF4j使用 1. 如何在系统中使用SLF4j 2. 统一日志记录 三. SpringBoot日志关系 四. 日志使用; 1. 默认配置 2. SpringBoot修改日志的默认配置 3. 自定义日志配置 一. 日志框架 小张;开发一个大型系统; System.out.println("");将关键数据打印在控制台;去掉?写在一个文件? 框架来记录系统的一些运行时信息;日志框架 ; zhanglogging.jar; 高大上的几个功能?异步模式?自动归档?xxxx? zhanglogging-good.jar? 将以前框架卸下?换新框架,重新修改之前的API;zhanglogging-prefect.jar; JDBC—数据库驱动;写了一个统一的接口层; 日志门面(日志的一个抽象层);logging-abstract.jar; 给项目中导入具体的日志实现就行了;我们之前的日志框架都是实现的抽象层; 市面上的日志框架; JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j… 日志门面 (日志的抽象层) 日志实现 JCL(Jakarta Commons Logging) SLF4j(Simple Logging Facade for Java) jboss-logging Log4j JUL(java

SLF4J error: class loader have different class objects for the type

被刻印的时光 ゝ 提交于 2020-02-21 10:06:42
问题 trying to figure out why I'm getting the following error in tomcat logs: Caused by: java.lang.LinkageError: loader constraint violation: when resolving method "org.slf4j.impl.StaticLoggerBinder.getLoggerFactory()Lorg/slf4j/ILoggerFactory;" the class loader (instance of org/apache/catalina/loader/WebappClassLoader) of the current class, org/slf4j/LoggerFactory, and the class loader (instance of sun/misc/Launcher$AppClassLoader) for the method's defining class, org/slf4j/impl/StaticLoggerBinder

weblogic下部署应用时slf4j与logbak冲突的解决办法

三世轮回 提交于 2020-02-17 20:17:46
今天在weblogic上部署一个使用logback的应用时,报错如下: java.lang.IllegalArgumentException: Invalid 'logbackConfigLocation' parameter: /opt/app/Oracle/Middleware/user_projects/domains/base_domain/servers/Server7005/tmp/_WL_user/acc_service_ca/bk1axn/war/WEB-INF/lib/_wl_cls_gen.jar!/logback.xml 网上搜索了一翻,大致原因是weblogic已经自带了slf4j的模块,与应用中的logback冲突,按照官网 https://community.oracle.com/thread/3525130?start=0&tstart=0 的做法,在WEB-INF下放一个名为weblogic.xml的文件,参考以下内容: 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90"> 4 <session-descriptor> 5 <cookie-path>/</cookie-path> 6 <

Slf4j打印异常的堆栈信息

前提是你 提交于 2020-02-15 07:01:13
一、前言   直接用logger.info("异常信息为:"+e)或者logger.info(e.getMessage())只能记录到异常的描述信息,却没有其异常具体发生在哪一行代码。 这样即使通过日志发现出现了异常,也没法马上定位问题。 因此就催生了一个想法,打印日志是否能像在IDE本地跑程序时出现未捕获的异常时,控制台能打印出完整的错误堆栈信息。 二、问题场景   日常开发中,经常在service实现层使用try-catch-finally保证代码的健壮性, 直接用logger.info("异常信息为:"+e)或者logger.info(e.getMessage())只能记录到异常的描述信息,无法打印完整异常堆栈信息,无法定位其异常具体发生在哪一行代码,当面对比较复杂的代码,那么排查问题将会非常麻烦。 下文将简单重现这类场景,并得到相应的解决方法。 1、不加try-catch 示例: @GetMapping("/hello") public String sayHello(){ logger.info("hello Sfl4j + logback......"); int i = 3/0; return helloService.sayHello(); } 运行结果: 即:当不加try-catch的时候,当出现了意料之外的运行时异常,控制台是能够能打印出完整的错误信息。 2

通过jdbc连接hive

走远了吗. 提交于 2020-02-13 15:32:18
目前使用hive的方式主要有2种: a、仅把hive作为一个可以对文件使用sql查询的工具来使用,即常见的在hive客户端上,指定hive的metastore和hive的数据仓库目录(即hdfs目录),然后指定hadoop的目录以及相应执行的jar包即可,在命令行下调用: 1 mammut@classb-ds-bigdata16:~/apache-hive-1.2.1-bin$ bin/hive 2 Logging initialized using configuration in /home/mammut/apache-hive-0.13.1-bin/conf/hive-log4j.properties.self 3 Hive history file=/tmp/mammut/hive_job_log_21e28d9e-7756-402e-b0d2-242f4ceef095_1602622773.txt 4 hive> b、将hive作为一个可以提供SQL接口的数据库来使用,这样可以通过jdbc连接 这里就是对第二种方式做一下整理和记录,在实现的过程中,遇到了一些问题,解决的过程中也顺带学习了一些概念和方法。 分解成各个子模块后,主要是下面几点: 1、搭建hiveserver2服务器 2(可选)、认证方式为kerberos认证,则需要配置相应的kerberos 3、代码实现:

SpringBoot里slf4j日志功能的默认实现

亡梦爱人 提交于 2020-02-13 13:17:56
本文是这篇教程的学习笔记: https://www.springboottutorial.com/logging-with-spring-boot-logback-slf4j-and-log4j 我有一个最简单的SpringBoot应用,其pom.xml里的依赖定义如下: 上图看到很多Starter,比如Spring-boot-starter-data-redis, Spring-boot-starter-web等等。这些Starter都包含了一个spring-boot-starter, 而这个starter又包含了一个实现logging的starter,叫做spring-boot-starter-logging. 也就是说,如果我们使用SpringBoot,无需再导入额外的配置,就能使用日志功能了。 SpringBoot slf4j的默认实现是logback,默认输出是到控制台console: As you can see the default logging framework is Logback with SLF4j as implementation. By default, all logging goes to console. 在Application.properties文件里使用logging.level.root配置项目全局的日志级别: