log4j配置

spring mvc log日志由log4j桥接至log4j2

冷暖自知 提交于 2019-12-18 05:19:11
简介 spring mvc的日志系统可以配置很多版本,比如log4j、log4j2、logback等等,在参考资料中介绍了Spring mvc如何直接集成log4j2,我们这里介绍的是,如何将原系统中的log4j改为使用log4j2. 操作步骤 1. 删除原Spring mvc中对log4j的依赖 <exclusions> <exclusion> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </exclusion> </exclusions> 2、添加log4j2的依赖,其中og4j2的版本我选择的是, <log4j2.version>2.11.2</log4j2.version>,其中jul(java util logging)jcl (apache commons-logging)的依赖可以不用添加 <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>${log4j2.version}</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId>

Spring boot中使用log4j

杀马特。学长 韩版系。学妹 提交于 2019-12-16 15:06:20
  我们知道,Spring Boot中默认日志工具为logback,但是对于习惯了log4j的开发者,Spring Boot依然可以很好的支持,只是需要做一些小小的配置功能。Spring Boot使用log4j只需要一下几步 引入log4j依赖   在创建Spring Boot工程时,我们引入了 spring-boot-starter ,其中包含了 spring-boot-starter-logging ,该依赖内容就是Spring Boot默认的日志框架Logback,所以我们在引入log4j之前,需要先排除该包的依赖,再引入log4j的依赖,就像下面这样 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot<

logback与Log4J的区别

别来无恙 提交于 2019-12-16 15:00:43
Logback和log4j是非常相似的,如果你对log4j很熟悉,那对logback很快就会得心应手。下面列了logback相对于log4j的一些优点: 更快的实现 Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。 非常充分的测试 Logback经过了几年,数不清小时的测试。Logback的测试完全不同级别的。在作者的观点,这是简单重要的原因选择logback而不是log4j。 Logback-classic非常自然实现了SLF4j Logback-classic实现了SLF4j。在使用SLF4j中,你都感觉不到logback-classic。而且因为logback-classic非常自然地实现了SLF4J,所以切换到log4j或者其他,非常容易,只需要提供成另一个jar包就OK,根本不需要去动那些通过SLF4JAPI实现的代码。 非常充分的文档 官方网站有两百多页的文档。 自动重新加载配置文件 当配置文件修改了,Logback-classic能自动重新加载配置文件。扫描过程快且安全,它并不需要另外创建一个扫描线程。这个技术充分保证了应用程序能跑得很欢在JEE环境里面。 Lilith Lilith是log事件的观察者,和log4j的chainsaw类似。而lilith还能处理大数量的log数据

log4j入门采坑

我只是一个虾纸丫 提交于 2019-12-16 06:19:12
简介 日志的重要性不多说了,使用方法就是把log4j的jar包扔到项目里,然后在资源文件夹中添加一个log4j.properties的配置文件即可,下面直接说属性文件的配置,(刚入门,只学会了这一种配置方式)xml形式的配置省略了哈 log4j下载地址 maven依赖 < dependency > < groupId > log4j </ groupId > < artifactId > log4j </ artifactId > < version > 1.2.17 </ version > </ dependency > 配置 ​ 没接触log4j之前,我自己想象中的日志配置应该包含这些内容,1.日志存在哪儿,2.日志内容记录了什么。带着这样的疑问开始了入坑之旅 。其实我的猜测中少了一项, 日志级别 。专业点的说法log4j配置文件中主要包含了一下三点: 日志等级 日志的输出方式 日志的布局样式 1.日志等级 log4j.rootLogger 日志等级决定了项目中,日志信息的最低等级,【ALL < DEBUG < INFO <WARN < ERROR < FATAL < OFF】 配置时我们只使用其中的四个即可,【DEBUG INFO WARN ERROR】 当然了,一个配置文件可以多个附加方式输出跟在等级后面用 逗号 隔开 例: log4j.rootLogger=INFO

为什么是SLF4J而不是Log4J?

我与影子孤独终老i 提交于 2019-12-15 03:37:26
slf4j不同于其他日志类库,与其它有很大的不同。slf4j(simple logging facade for java)不是一个真正的日志实现,而是一个抽象层( abstraction layer),也可以理解为一个接口,它是一种适配器的实现方式,它本身不具有输出日志的功能,输出日志还是由log4j、logback等这样的日志组件来进行输出。如下图描述slf4j和log4j的关系 下面我来举个场景,现在开发项目都是使用maven进行构建开发,假设架构师a开发了一个order.jar通用组件,他在程序中使用的是log4j组件进行日志输出;程序员b自己之前一直在开发自己的业务模块,并且他在程序中使用的是logback日志组件,突然有一天程序员b需要在自己的业务系统中使用架构师a的order.jar通用组件,这个时候问题就出现了,由于两套程序使用了不同的日志组件,程序员b除了要维护自己的logback日志组件配置,还需要维护order,jar中的日志组件配置,这个问题是很头疼的。其实解决这一切问题也不是什么难事,使用slf4j就可以顺利解决。 总的来说,slf4j使你的代码独立于任意一个特定的日志api,这是一个对于开发api的开发者很好的思想。虽然抽象日志类库的思想已经不是新鲜的事物而且apache commons logging也已经在使用这种思想了

日志之基本介绍(一)

本秂侑毒 提交于 2019-12-11 14:59:15
  日志是平时开发时最长用到的开发工具,可以打印出我们必要的运行期数据或者提示到日志文件,供我们排错或者查找数据使用,也许我们平时只关注于日志的使用,以及打印数据的格式,比较少关注如何去搭建一套日志输出体系,由于最近做的一个项目中涉及到日志输出时的问题,所以这里就讲日志有关的知识和使用进行总结,一来供自己日后使用,再则和大家共同学习。 日志简介   首先我们要知道,就目前我们使用的日志系统分为两部分:日志门面和日志实现。所谓日志门面就是日志接口,之所以要定义日志门面就是为了解耦,不让具体的日志实现和我们业务进行耦合,这样我们可以根据自己的需要很方便的选择或者更改日志实现的组件,而日志实现就是具体实现日志输出。   常见的日志门面包含:commons-logging(之前叫 Jakarta Commons Logging,JCL)和slf4j(全称为Simple Logging Facade for JAVA)   常见的日志实现:Log4j,LogBack,jdk自带的日志实现   我们在搭建日志系统时根据需要选择日志门面和日志实现,常用的搭配是:commons-logging和Log4j,slf4j和LogBack,slf4j和Log4j等,注意不同的搭配所依赖的包是不同的,后面我们在将不同的日志系统搭配时会进行介绍,还要特别注意的是有些依赖包也包含日志的依赖

mybatis-Logging

馋奶兔 提交于 2019-12-10 18:10:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Logging Mybatis内置的日志工厂提供日志功能,具体的日志实现有以下几种工具: SLF4J Apache Commons Logging Log4j 2 Log4j JDK logging 具体选择哪个日志实现工具由MyBatis的内置日志工厂确定。它会使用最先找到的(按上文列举的顺序查找)。 如果一个都未找到,日志功能就会被禁用。 不少应用服务器的classpath中已经包含Commons Logging,如Tomcat和WebShpere, 所以MyBatis会把它作为具体的日志实现。记住这点非常重要。这将意味着,在诸如 WebSphere的环境中——WebSphere提供了Commons Logging的私有实现,你的Log4J配置将被忽略。 这种做法不免让人悲催,MyBatis怎么能忽略你的配置呢?事实上,因Commons Logging已经存 在了,按照优先级顺序,Log4J自然就被忽略了!不过,如果你的应用部署在一个包含Commons Logging的环境, 而你又想用其他的日志框架,你可以通过在MyBatis的配置文件mybatis-config.xml里面添加一项setting(配置)来选择一个不同的日志实现。 <configuration> <settings> ...

你知道为什么阿里禁止工程师直接使用日志系统(Log4j、Logback)中的API吗?

谁说胖子不能爱 提交于 2019-12-10 17:25:04
作为 Java 程序员,我想很多人都知道日志对于一个程序的重要性,尤其是 Web 应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。 所以,日志在 Java Web 应用中至关重要,但是,很多人却以为日志输出只是一件简单的事情,所以会经常忽略和日志相关的问题。在接下来的几篇文章中,我会来介绍介绍这个容易被大家忽视,但同时也容易导致故障的知识点。 Java 语言之所以强大,就是因为他很成熟的生态体系。包括日志这一功能,就有很多成熟的开源框架可以被直接使用。 首先,我们先来看一下目前有哪些框架被广泛的使用。 常用日志框架 j.u.l  j.u.l 是 java.util.logging 包的简称,是 JDK 在 1.4 版本中引入的 Java 原生日志框架。Java Logging API 提供了七个日志级别用来控制输出。这七个级别分别是:SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST。 Log4j  Log4j 是 Apache 的一个开源项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件,甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是

Java日志打印: log4j2

China☆狼群 提交于 2019-12-10 01:42:21
1. Java 常用日志输出 java 中进行日志打印的方法有很多种,主要分为以下几类: 1 最简单的 system.print.out、err之类的打印 2 java.util.logging ; 在JDK 1.4 版本之后,提供了日志的API ,可以往文件中写日志了 3 log4j , 最强大的记录日志的方式。 可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等 4 commons-logging, 最综合和常见的日志记录方式, 经常是和log4j 结合起来使用 当然这里并不打算介绍每一种日志输出,而是着重讲一下 log4j 日志打印。 2. log4j log4j 作为之前比较流行的日志打印插件,可以在控制台打印信息,并将信息记录到文件里面。但随着 log4j2 的出现, log4j 逐渐被舍弃。 3. log4j2 log4j2 和 log4j 同属一个作者开发 , log4j2 是 后来 重新架构的一款日志组件,抛弃了之前 log4j 的不足,以及吸取了优秀的 logback 的设计重新推出的一款新组件。 3.1. log4j2 和 slf4j 一般来说 log4j2 是和 slf4j 搭配使用,主要原因如下: log4j2 是一个日志框架, slf4j 是日志框架接口,之所以使用 log4j2 和 slf4j

Could not initialize class org.apache.log4j.Log4

蓝咒 提交于 2019-12-09 20:30:02
(一) 现象与解决方法 前些天在进行storm job的开发时候突然报了一个错误,记录一下 Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory 当然我们的第一个反应是log4j这个包缺失(当然也有这种情况,需要首先确认),打开pom文件查看依赖,文件确实存在。 后经网上搜索加边上大牛指点发现: log4j-over-slf4j.jar 和 slf4j-log4j12.jar 在同一个classpath下就会出现这个错误。 解决方法: 将slf4j-log4j12.jar从相关的jar中排除 (二) 日志组件tips 那么问题来了,为啥会有这种冲突呢?在这里需要简单的说一下log的故事! (1)common-logging、log4j、slf4j、logback common-logging common-logging是apache提供的一个通用的日志接口; 在common-logging中,有一个Simple logger的简单实现,但是它功能很弱,所以使用common-logging,通常都是配合着log4j来使用; common-logging会通过动态查找的机制,在程序运行时自动找出真正使用的日志库