学习目标

  • (1)Junit 针对方法
  • (2)log4j与sl4j
  • (3)Spring - IOC

log4j的介绍

  • (1)什么是log4j?
    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件等
  • (2)有什么特点?
    》可以控制每一条日志的输出格式
    》控制日志的生成过程
    通过一个配置文件来灵活地进行配置log4j.properties,而不需要修改应用的代码

public class Test01 {//模式 debugprivate static boolean  isDebug = false;public static void main(String[] args) {String username = "jack";if(isDebug){//调bugSystem.out.println("main username "+username);}}
}

log4j如何使用

  • (1)依赖
 <!--日志包--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>
  • (2)配置文件log4j.properties
  • (3)调用
private static final  Logger logger = Logger.getLogger- (当前类.class);
logger.debug- (重要数据);
logger.info- (重要数据);
logger.warn- (重要数据);
logger.error- (重要数据);
  • (4)日志信息的优先级
    Log4j建议只使用四个级别,从高到低有ERROR>WARN> INFO>DEBUG
    如果定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来
    简单一句话,就是控制是否打印的总开关
public class Test02 {//生成日志器对象private static final Logger logger = Logger.getLogger(Test02.class);public static void main(String[] args) {String username = "jack";logger.info(username);}
}

log4j.properties


# 日记级别- (单个级别) 文件/控制台
log4j.rootLogger=warn, stdout,file# Redirect log messages to console
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n# Rirect log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=test.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

log4j与slf4j的区别

  • (1)什么是log4j
    log4j : 即 log for java;Java的日志4英文名 four 与for同音
  • (2)什么是slf4j
    slf4j : simple log facade for java :简单日志门面
  • (3)有什么区别
    log4j是真正实现日志功能的产品,同类产品很多
    slf4j 是一个适配器,当我们的系统换了一个日志源后,不需要更改代码

依赖

 <!--日志包--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.25</version></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency>

Sl4j的原理模拟

假设日志系统A的info日志输出方法如下
A.message();
日志系统B的info日志输出方法如下
B.show();
log4j的info日志输出方法如下:
logger.getInfo()  //演示用  实际不是这个方法slf4j的实现就是:
slf4j slf4j = new slf4j (A);
log.info();
这样我们用的就是日志系统A的方法,如果使用lo4j来打印日志,仅仅需要配置新的日志源即可
slf4j slf4j = new slf4j(log4j);
log.info();
而不需要更改其他代码
public class Test03 {//生成日志器对象private static final Logger logger = LoggerFactory.getLogger(Test03.class);public static void main(String[] args) {String username = "jack";logger.info(username);}
}

Day21logj4与sl4j的区别相关推荐

  1. 一文读懂常用日志框架(Log4j、SLF4J、Logback)有啥区别

    1.概述 相信目前大多数情况下,不管是开源框架或是平时我们工作编码中都离不开一种框架,它就是日志框架.因此本节就简单了解一下我们常用日志框架的区别. 2.Commons Logging common- ...

  2. RPC 笔记(01)— RPC概念、调用流程、RPC 与 Restful API 区别

    1. 基本概念 PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务.当两个物理分离的子系统需要建立逻辑上的关联时,RPC 是牵线搭桥的常见技术手 ...

  3. C++ 笔记(28)— C++ 中 NULL和 nullptr 的区别

    最近看公司代码的时候发现在判断指针是否为空的时候,有的时候用的是 NULL, 有的时候用的是 nullptr 感觉很奇怪,好奇心驱使我查了下两者的区别,发现还是有很多细节需要学习的. 1. NULL ...

  4. gcc 和 g++ 的联系和区别,使用 gcc 编译 c++

    GCC 编译器已经为我们提供了调用它的接口,对于 C 语言或者 C++ 程序,可以通过执行 gcc 或者 g++ 指令来调用 GCC 编译器. 实际使用中我们更习惯使用 gcc 指令编译 C 语言程序 ...

  5. Python2 与 Python3 区别

    Python2.x 与 Python3.x 区别 1. print 函数 Python2 中 print 是语句(statement),Python3 中 print 则变成了函数.在 Python3 ...

  6. Docker 入门系列(1)- 初识容器,镜像、容器、仓库的区别

    Docker 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...

  7. HTTP 协议入门 — (TCP/IP协议族、通信传输流、URI 与 URL 的区别、Cookie 状态管理、HTTP 支持的方法、状态码类别、HTTP 首部字段)

    TCP/IP协议族 在介绍 HTTP 协议之前,我们先对 TCP/IP 协议族有个大概的了解,TCP/IP 协议从上到下主要分为应用层.传输层.网络层和数据链路层,各层的主要功能如下表所示: 协议层 ...

  8. python二进制打开(rb)和文本格式打开(r)什么区别?

    使用 open() 函数以文本格式打开文件和以二进制格式打开文件,唯一的区别是对文件中换行符的处理不同. 在 Windows 系统中,文件中用 "\r\n" 作为行末标识符(即换行 ...

  9. python中__dict__与dir()区别

    前言 Python下一切皆对象,每个对象都有多个属性(attribute),Python对属性有一套统一的管理方案. __dict__与dir()的区别: dir()是一个函数,返回的是list: _ ...

最新文章

  1. android闹钟例子,自己软件中调用android系统闹钟
  2. 你是如何保护用户的密码的?
  3. 调优您的 LAMP 应用程序的 5 种简单方法
  4. ejabberd登陆不成功的解决方案
  5. 【ZOJ - 3780】Paint the Grid Again(拓扑排序,图论,证明性质)
  6. c语言switch scanf语句,C语言中scanf函数与switch语句
  7. 分别用 数组和链表处理约瑟夫环问题
  8. 全国计算机英语四六级准考证打印准考证号,2017全国大学生英语四六级准考证打印...
  9. ElasticSearch fuzzy模糊查询(英文检索)
  10. 具体解决VS“滴答数必须介于 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 之间”奇怪问题...
  11. python魔法方法和普通方法_Python魔法方法之属性访问详解!
  12. python百度语音实时识别成文字_python 上传百度语音识别+文字返回结果
  13. C语言项目大作业万历年,用C语言编写万历,详细代码.doc
  14. 用计算机做设计,做平面设计一般电脑可以吗
  15. Mac 解决 Font family [“sans-serif”] not found , Glyph xxx missing from current font 的问题
  16. part-15 开环增益Avol
  17. ipone5 无法安装ipa软件
  18. 从fastq生成vcf文件
  19. 微信小程序之文本换行居中
  20. Excel使用技巧——提取混合单元格中的数字

热门文章

  1. nginx使用lua实战
  2. labelme——语义分割标注
  3. android studio管理源码下载,基于Android Studio的Android挂号管理系统JAVA后端
  4. win10锁定计算机命令,锁定Windows 10 PC的10种方法
  5. 工业物联网云平台助力智慧运维
  6. [kotlin]kotlin中的伴生对象(companion object)到底是个什么东西?
  7. Judy 分享——区块链的终极猜想
  8. ubuntu上搭建tftp服务
  9. mysql数据库添加用户
  10. Mysql添加用户、修改权限,修改登录权限ip