关于WAS当中FFDC报告java.util.zip.ZipException: error in opening zip file剖析及解决
之前都是使用SparkStreaming开发,最近打算学习一下Flink,就从官网下载了Flink 1.11,打算搞一个客户端,将程序提交在yarn上。因为Flink从1.7之后就不再提供Hadoop的依赖,所以很多依赖就要自己下载,于是各种ClassNotFoundException,其中以log*.class为首的格外猖狂,可能是因为flink和Hadoop的日志实现有点区别,就一直哐哐哐报错,slf4j、log4j、logback各种jar包十几个,百度好久也没搞清各个jar有什么区别,用在何处,就打算自己总结一下。
SparkStreaming用久了,打算学习一下Flink,就从官网下载了Flink 1.11,打算搞一个客户端,将程序提交在yarn上。因为Flink从1.7之后就不再提供Hadoop的依赖,所以很多依赖就要自己下载,于是各种ClassNotFoundException,其中以log*.class为首的格外猖狂,可能是因为flink和Hadoop的日志实现有点区别,就一直哐哐哐报错,slf4j、log4j、logback各种jar包十几个,百度好久也没搞清各个jar有什么区别,用在何处,就打算自己总结一下。
本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用、依赖,好让我们平时在工作中如果遇到“日志打不出”或者“日志jar包冲突”等之类的问题知道该如何入手解决,以及在各种场景下如何调整项目中的各个框架的日志输出,使得输出统一。
Mybatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理:
首先要感谢一下读者朋友们的支持,你们每一个的赞都是对陈某最大的肯定,陈某也会一如既往的加油,奥利给!!! 言归正传,上一篇文章写了Spring Boot的默认日志框架Logback的基本配置,有兴趣的可以看看:Spring Boot第三弹,一文带你搞懂日志如何配置?。
MyBatis 的内置日志工厂提供日志功能,内置日志工厂将日志交给以下其中一种工具作代理:
Spring环境 1、核心容器 spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE.jar commons-logging-1.1.3.jar 2、aop模块 com.springsource.net.sf.cglib-2.2.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar spring-aop-4.0.0.RELEASE.jar spring-aspects-4.0.0.RELEASE.jar 3、数据库模块(只用它的声明式事务功能,操作数据库用MyBatis而不是jdbcTemplate) spring-jdbc-4.0.0.RELEASE.jar spring-orm-4.0.0.RELEASE.jar spring-tx-4.0.0.RELEASE.jar
复制来源:java日志组件介绍(common-logging,log4j,slf4j,logback ) common-logging common-logging是apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱。所以使用common-logg
由于 JDK 自带的 java.util.logging实现提供的日志管理能力极为有限,不支持应用级别日志管理。因此,Tomcat 默认的日志库对java.util.logging API 进行了重新实现,这些实现被称为 “JULI” ,里面包含了一些特有的定制类,其中最重要的是一个自定义的LogManager类,它能够区别出运行在 Tomcat 容器中的多个不同的Web应用以及它们的类加载器,从而可以支持不同的应用使用各自独立的日志配置。 你可以从 Tomcat 全局和 Web 应用两个层面对 Tomcat 默认的JULI进行日志配置:
1.1 下载解压log4j.jar(地址:http://mirrors.hust.edu.cn/apache/logging/log4j/2.11.0/)
根据(https://bbs.csdn.net/topics/110051940)认为引入 jcommon.jar,log4j.jar 可以解决这个问题,事实证明,的确如此!
行业项目当中,有许多地方需要实现定时执行,场景比如:用户在登录的时候,需要输入密码,且连续输入3-5次都不对者,系统将冻结账户,不再允许账户登录,等到了第二天凌晨需要解冻,这样用户在第二天就又可以再次登录了,这样做的目的是为了账户安全,可以有效防止暴力破解密码。 需求明确了,那么如何去实现类似这样的功能呢?很早的方法是使用JDK自带的Timer和TimerTask类,可经过测试,要想做到精准的定时,还是比较困难的。那么有其它解决方案吗?当然,使用Quartz,来,一起科普一
第2章 MyBatis HelloWorld 2.1 开发环境的准备 导入MyBatis框架的jar包、Mysql驱动包、log4j的jar包 myBatis-3.4.1.jar mysql-conn
diary_report.jpg What did you do today 日志门面有:jcl(Apache Commons Logging), slf4j, jboss-logging(不是服务大众的)。日志实现有:log4j, log4j2,logback,jul(java.util.logging)。公司的日志框架选型是slf4j + log4j2。现在捋一捋他们之间的关系,进行jar包总结。 log4j1 : log4j.jar有log4j的全部内容。 log4j2:log4j-api包
Spring是一个开源框架,由Rod Johnson创建,一位悉尼大学的音乐学博士,没错,他的专业是音乐而不是计算机。
还在为弄不清commons-logging.jar、log4j.jar、sl4j-api.jar等日志框架之间复杂的关系而感到烦恼吗?还在为如何统一系统的日志输出而感到不知所措嘛?
common-logging是 apache提供的一个通用的日志接口。用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的logging, common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库。当然,common-logging内部有一个Simple logger的简单实现,但是功能很弱。所以使用common-logging,通常都是配合着log4j来使用。使用它的好处就是,代码依赖是common-logging而非log4j, 避免了和具体的日志方案直接耦合,在有必要时,可以更改日志实现的第三方库。使用common-logging的常见代码:
1、Java日志体系(目前常用) slf4j:由log4j的作者开发,本身不替供日志具体实现,只对外提供接口或门面。 logback:slf4j的作者开发的的slf4j的实现,优于log4j。 log4j2:由Apache开发,参考了logback,并做了一些优化。 jdk自带的JUL(java.util.logging)和Apache的JCL(Jakarta Commons Logging)好像不太常用了。 2、slf4j和常用日志实现组件的适配 slf4j + logback:slf4j-api.jar
使用过Log4J和LogBack的同学肯定能发现,这两个框架的设计理念极为相似,使用方法也如出一辙。其实这个两个框架的作者都是一个人,Ceki Gülcü,俄罗斯程序员。
Java日志概述 对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul。 Java常用日志框架类别介绍 Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。 Log4j 2 Ap
java日志概述 对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。java领域存在多种日志框架,目前常用的日志框架包括Log4j,Log4j 2,Commons Logging,Slf4j,Logback,Jul。 java常用日志框架类别介绍 Log4j Apache Log4j是一个基于Java的日志记录工具。它是由Ceki Gülcü首创的,现在则是Apache软件基金会的一个项目。 Log4j是几种Java日志框架之一。 Log4j 2 Apa
一是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异常 错误 日志信息 。 二是 访问 日志信息,它 记录 的 访问 的 时间 , IP , 访问 的 资 料等相 关 信息。
前面宏哥一连几篇介绍如何通过开源jar包Log4j.jar、log4j2.jar和logback实现日志文件输出,Log4j和logback确实很强大,能生成三种日志文件,一种是保存到磁盘的日志文件,一种是控制台输出的日志,还有一种是HTML格式的日志文件。有时候,我们不一定都需要这些文件,在我们自动化测试框架里,我们只需要把日志文件保存到磁盘文件中,所以,这里介绍一种不用Log4j或者logback来实现日志文件写入和保存。
Log4j插件可以通过log4j.jar获取Java日志,搭配Log4j的SocketAppender和SocketHubAppender使用,常用于简单的集群日志汇总。 最小化的配置 input { log4j { host=>"localhost" port=>4560 } } output { stdout {} } log4j插件配置host以及port就能监听localhost上的4560端口的log4j消息。 此时,如果你的log
我们都知道将一个项目部署到Tomcat之后,Tomcat服务启动后的标准输出(stdout)和标准出错(stderr)都会默认重定向到${TOMCAT_HOME}/logs/catalina.out这个文件中,有时候短短一会儿这个文件就能达到几十兆甚至上百兆,日积月累这个文件如果不及时清理将会占用服务器磁盘大量空间从而影响到整个项目的正常运行; 再者这样大日志文件对于我们进行错误排查以及日志分析都不是很方便,一次打开也花上好几分钟,直接cat命令查看也要滚掉好多屏,并且那时候想要来切割的话又异常麻烦。 所以,现在我们提前做好用日期来分割日志的配置,即Tomcat运行的每天都按照日期命名新建一个日志文件。
struts2、hibernate、spring所需jar包 struts-core-2.x.x.jar ----struts核心包 xwork-core-2.x.x.jar -----身体ruts在其撒很难过构建 ognl-2.6.x.jar ----对象导航语言 freemarker-2.3.x.jar ------struts2的ui标签的模板使用 commons-fileupload-1.2.x.jar ----文件上传组件 2.1.6版本后需加入此文件 str
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库。
MyBatis是一个Java持久层框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。mybatis 可以将 preparedStatement 中的输入参数自动进行映射,将查询结果集灵活映射成 java 对象。所以使用 mybatis 我们就可以不用写原生 jdbc 程序,并且能很好的避免 原生 jdbc 中 SQL 注入的问题。
This warning, i.e. not an error, message is reported when no SLF4J providers could be found on the class path. Placing one (and only one) of slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar or logback-classic.jar on the class path should solve the problem. Note that these providers must target slf4j-api 1.8 or later.
其中,①-③为同一个作者(Ceki)所写。④被很多开源项目所用,⑤是Java原生库(以下用j.u.l简写来代替),但是在Java 1.4中才被引入。
日志框架的出现是为了更好的控制软件运行记录的信息,如果使用大量的System.out.println("")将无法有效的控制输出,市面上常见的日志框架有: JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j…
详情请参考:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html
简单的说log4j就是帮助开发人员进行日志输出管理的API类库。它最重要的特点就可以配置文件灵活的设置日志信息的优先级、日志信息的输出目的地、日志信息的输出格式
本地模式:你可以在你的本地机器上开发测试你的topology, 一切都在你的本地机器上模拟出来;
本节,将分享如何在一个SpringMVC web应用中整合log4j记录系统日志。
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
java 界里有许多实现日志功能的工具,最早得到广泛使用的是 log4j,许多应用程序的日志部分都交给了 log4j,不过作为组件开发者,他们希望自己的组件不要紧紧依赖某一个工具,毕竟在同一个时候还有很多其他很多日志工具,假如一个应用程序用到了两个组件,恰好两个组件使用不同的日志工具,那么应用程序就会有两份日志输出了。
上一章节我们一起学习了DataSource源码逻辑。本次我们学习MyBatis的Log日志处理模块。
自动化测试中如何输出日志文件。任何软件,都会涉及到日志输出。所以,在测试人员报bug,特别是崩溃的bug,一般都要提供软件产品的日志文件。开发通过看日志文件,知道这个崩溃产生的原因,至少知道触发崩溃的条件是什么。同样在自动化测试框架设计,日志文件输出是不可或缺的。我们习惯通过日志输出来记录我们用例执行的情况。当然测试报告更直观,但是如果出现问题,往往是日志文件更有效。这里我们介绍如何通过Log4j.jar来帮助我们输出一个日志。
导语:设计模式是无数码农前人在实际的生产项目中经过不断的踩坑、爬坑、修坑的经历总结出来的经验教训,经过抽象之后表达成的概念。能够帮助后来的设计者避免重复同样的错误或者弯路。我也抽空整理了一下设计模式,用自己的话总结了一下,自认为通俗易懂。
在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。 在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J、SLF4J。这些日志记录框架各有各的特点,各有各的应用场景。了解这些框架的特点及应用场景,有利于我们做技术选型的时候做出正确的判断。 获取更多视频资料加群:554355695 如果你想学习Java工程化、高
在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。 在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J、SLF4J。这些日志记录框架各有各的特点,各有各的应用场景。了解这些框架的特点及应用场景,有利于我们做技术选型的时候做出正确的判断。 JDKLog:日志小刀 JDKLog是JDK官方提供的一个记录日志的方式
领取专属 10元无门槛券
手把手带您无忧上云