Java最全从原理到实践彻底搞懂 Java 日志系统,再也不迷茫了!(1),Java高级工程师面试实战

总结

总的来说,面试是有套路的,一面基础,二面架构,三面个人。

最后,小编这里收集整理了一些资料,其中包括面试题(含答案)、书籍、视频等。希望也能帮助想进大厂的朋友

三面蚂蚁金服成功拿到offer后,他说他累了

三面蚂蚁金服成功拿到offer后,他说他累了

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

3)测试代码:

import org.apache.log4j.Logger;

public class Log4jTest {

public static void main(String[] args) {

Logger logger = Logger.getLogger(Log4jTest.class);

logger.info(logger.getClass().getName());

logger.info(“apache日志框架log4j”);

}

}

4)运行结果:

2、使用JUL日志框架实现

1)JUL日志系统在JDK中已引入,故无需导包,代码如下:

import java.util.logging.Logger;

public class JulTest {

public static void main(String[] args) {

Logger logger = Logger.getLogger(JulTest.class.getName());

//判断日志使用类型

logger.info(logger.getClass().getName());

logger.info(“官方JDK日志框架Jul”);

}

}

2)运行结果:

四、日志门面框架整合日志实现框架

使用日志门面框架缘由:在阿里开发手册上有关于日志门面使用系统的强制规约:

应用中不可直接使用日志系统(log4j、logback)中的 API ,而应依赖使用日志框架中的 API 。使用门面模式的日志框架,有利于维护和各个类的日志处理方式的统一。

1、Sif4j门面框架+Log4j实现

1)添加slf4j的核心依赖:

org.slf4j

slf4j-api

2)Sif4j门面框架+Log4j实现使用的桥接器:

桥接器:日志门面接口本身通常并没有实际的日志输出能力,它底层还是需要去调用具体的日志框架API的,也就是实际上它需要跟具体的日志框架结合使用。

由于具体日志框架比较多,而且互相也大都不兼容,日志门面接口要想实现与任意日志框架结合可能需要对应的桥接器,说白了,所谓“桥接器”,不过就是对某套API的伪实现。

这种实现并不是直接去完成API所声明的功能,而是去调用有类似功能的别的API。这样就完成了从“某套API”到“别的API”的转调。

添加桥接依赖:

org.slf4j

slf4j-log4j12

3)测试代码:

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class Log4jSif4jTest {

public static void main(String[] args) {

Logger logger = LoggerFactory.getLogger(Log4jSif4jTest.class);

logger.info(logger.getClass().getName());

logger.info(“门面框架Sif4j整合Log4j输出”);

}

}

4)结果输出:

2、JCL门面框架+JUL实现

1)引入桥接依赖:

commons-logging

commons-logging

2)测试代码:

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class JCLJULTest {

public static void main(String[] args) {

Log log = LogFactory.getLog(JCLJULTest.class.getName());

log.info(log.getClass());

log.info(“门面框架JCL整合JUL输出”);

}

}

3)输出结果:

此时,不是红色字体的JCL依赖。

原因是:JCL动态查找机制进行日志实例化,执行顺序为

commons-logging.properties>系统环境变量>log4j>jul>simplelog>nooplog

故添加commons-logging.properties。

org.apache.commons.logging.Log = org.apache.commons.logging.impl.Jdk14Logger

4)重新运行,输出结果:

五、合整合日志门面为slf4j

1、需求场景:

若项目在开发过程中,不同开发小组使用了不同的日志门面和日志实现系统,如第四节中JCL+JUL和Slf4j+Log4j的实现模式,先在为了统一用Slf4j这个门面系统,又不想对原有JCL+JUL模式的代码进行修改,该如何操作?

2、采用适配器

官方流图如下:

对于JCL门面来说,要想转换成Slf4j,只需要引入JCL的适配器,引入jcl-over-slf4j 的jar包:

org.slf4j

jcl-over-slf4j

3、依旧使用第四章节的代码

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class JCLJULTest {

public static void main(String[] args) {

Log log = LogFactory.getLog(JCLJULTest.class.getName());

log.info(log.getClass());

log.info(“门面框架JCL整合JUL输出”);

}

总结

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了

image

1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB,Cassandra,设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。

image

2、Redis学习笔记及学习思维脑图

image

3、数据面试必备20题+数据库性能优化的21个最佳实践

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

5336682557)]

2、Redis学习笔记及学习思维脑图

[外链图片转存中…(img-Iuaft4E7-1715336682558)]

3、数据面试必备20题+数据库性能优化的21个最佳实践

[外链图片转存中…(img-1EMaozUu-1715336682558)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值