Log4j

my:Log4j

1.Log4j是什么

System:System.out.println()这个方法是同步的,代码中的System.out.println() 和java运行程序运行在同一线 程,业务程序会等待system.out的动作,导致资源被占用。

程序中大量使用System.out.println()势必会影响项目的性能。 在项目上线后尽量把System.out.println()的日志改用log4j 等工具进行调试信息的打印。这类工具是异步线程的,不 会使程序处于等待状态。(https://blog.csdn.net/MonkeyITBoy/article/details/81203489

slf4j:接口,不是具体实现;仅仅是对底层代码的简单优化

SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的 日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望 的日志System

Simple Logging Facade for Java(SLF4J)用作各种日志框架(例如java.util.logging,logback,log4j)的简 单外观或抽象,允许最终用户在部署 时插入所需的日志记录框架。

你可以把slf4j想成一个Java的接口,然后你需要实现这个接口,从而在运行时提供实际的日志记录

log4j:日志框架,slf4j的一种实现方式,一种优化

介绍

几乎每个大型应用程序都包含自己的日志记录或跟踪API。根据此规则,EU SEMPER项目决定编写自己的跟踪API。 这是在1996年初。经过无数的增强,API已经发展成为log4j的几个版本和许多工作,这是一个流行的Java日志包。该 软件包是在Apache软件许可证发布的,这是一个由开源计划认证的完全开源的许可证。最新的log4j版本,包括完 整源代码,类文件和文档,可以在http://logging.apache.org/log4j/找到。顺便说一句,log4j已被移植到C,C ++,C#,Perl,Python,Ruby和Eiffel语言。

将日志语句插入代码是一种用于调试它的低技术方法。它也可能是唯一的方法,因为调试器并不总是可用或适用。对于 多线程应用程序和整个分布式应用程序,通常就是这种情况。

经验表明,日志记录是开发周期的重要组成部分。它提供了几个优点。它提供了有关应用程序运行的精确 上下文。一 旦插入到代码中,日志输出的生成就不需要人为干预。此外,日志输出可以保存在持久性介质中以便稍后进行研究。除 了在开发周期中使用之外,还可以将足够丰富的日志包视为审计工具。

正如Brian W. Kernighan和Rob Pike在他们真正出色的书“编程的实践”中所说的那样

   作为个人选择,我们倾向于不使用调试器
   堆栈跟踪或变量或两个变量的值。一个原因是它
   很容易迷失在复杂数据结构的细节中
   控制流; 我们发现通过一个低效的程序
   而不是更努力地思考并添加输出语句和自我检查
   关键位置的代码。单击语句需要更长时间
   扫描明智放置的显示器的输出。它需要更少
   是时候决定放置打印语句的位置而不是单步执行
   代码的关键部分,即使我们知道它在哪里
   是。更重要的是,调试语句与程序保持一致;
   调试会话是暂时的。

记录确实有其缺点。它可以减慢应用程序的速度。如果过于冗长,则会导致滚动失明。为了缓解这些问题,log4j设计 为可靠,快速和可扩展。由于日志记录很少是应用程序的主要关注点,因此log4j API易于理解和使用。

Log4j有三个主要组件:记录器追加器布局。这三种类型的组件协同工作,使开发人员能够根据消息类型和级别记 录消息,并在运行时控制这些消息的格式以及报告的位置。

 

2.Log4j配置

使用slf4j与Log4j日志

现在我们可以试验并更换不同的日志实现,但你的程序代码可以保持不变。 我们要做的是用另一个流行的日志实现来替换掉slf4j-simple,比如Log4j。

 <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-log4j12</artifactId>
   <version>1.7.5</version>
 </dependency>

又一次,我们必须对我们选的每一个日志实现做配置。在这个例子中,我们需要一个文件 src/main/resources/log4j.properties

 log4j.rootLogger=DEBUG, STDOUT
 log4j.logger.deng=INFO
 log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
 log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
 log4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

重运行你的程序,你会看到同样的输出结果。

//*如果不是maven项目,仅仅是ssm项目的话,只要导入log4j的jar包,再弄一个配置文件log4j.properties放在src 下就ok了!

3.Log4j的使用

在Java程序中使用log4j:

下面的Java类是一个非常简单的例子,Java应用程序初始化,然后使用Log4J日志库。

 import org.apache.log4j.Logger;
 ​
 import java.io.*;
 import java.sql.SQLException;
 import java.util.*;
 ​
 public class log4jExample{
   /* Get actual class name to be printed on */
   static Logger log = Logger.getLogger(
                       log4jExample.class.getName());
 ​
   public static void main(String[] args)
                 throws IOException,SQLException{
    
      log.debug("Hello this is an debug message");
      log.info("Hello this is an info message");
   }
 }

/**以下是详细内容

史上最详细log4j使用文档

https://blog.csdn.net/qq_22310551/article/details/83009607

*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值