探索Java的日志世界
探索Java的日志世界
一、主题
打开日志的大门,探索的Java日志世界
二、目标
- 了解常用的日志框架
- 掌握日志框架的选择和使用以及开发规范
- 了解日志框架中的一些设计思想
三、内容
1、日志及日志框架简介
1.1 、日志简介
1.1.1 、 什么是日志?
1)基本字义是指工作日志 ,详细介绍一个过程和经历的记录。 日志(汉语词汇)
2)网络设备、系统及服务程序等,在运作时都会产生一个叫log的事件记录;每一行日志都记载着日期、时间、使用者及动作等相关操作的描述。 日志(计算机术语)
注: 日志可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。
1.1.2. 、什么是Java日志?
Java日志:Java应用程序在运行过程中记录的一些数据信息。
如访问的程序中某个接口的时间,请求参数、响应参数等等。
1.2、从System.out.println() 打开Java日志的大门
public static void main(String[] args) {
System.out.println("hello sitech");
}
优点:
使用方便和简单!
缺点:
- 只能输出到控制台,不能输出到文件!
- 不能自定义全局的输出格式!(日志级别、日志切割/自动归档、异步打印日志等)
- 性能较低,如 println了 synchronized!
1.3、日志框架的简介

commons-logging和slf4j都只是一个日志标准,并不是日志系统的具体实现!
log4j,logback等等才是日志的真正实现。
2、如何选择及使用日志框架
2.1、如何选择?
接口选一个 、实现选一个实现,组合!
日志门面/接口: SLF4J(即简单日志门面(Simple Logging Facade for Java) );
日志实现:Logback;log4j
2.2、 如何使用?
2.2.1 、单一日志框架通过slf4J使用 SLF4J user manual(用户使用手册)
注: 每个日志框架的实现都有自己的配置文件。使用slf4j以后,配置文件还是框架自己本身的配置文件;
导入对应的jar
编写相应实现的配置文件
使用slf4j编写日志代码
2.2.2、 在复杂系统如何统一所有的日志都统一到slf4J;legacy APIs
- 将系统中其他日志框架先排除出去;
- 用中间包来替换原有的日志框架;
- 我们导入slf4j其他的实现
2.3、例子
- 简单实现slf4j + log4J
- 简单实现slf4j + logback
- log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
- 解决办法
log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
3、 日志开发规范
参考 阿里巴巴Java开发手册(终极版).pdf - 日志规范
4、Slf4j使用到的设计模式
4.1 、设计模式
4.2 、 源码解析
四、 总结和讨论
1、总结
本次分享是Java日志的整体的介绍,其实日志开发中还有很多的细节需要关注!
比如日志的详细使用:日志配置文件编写,日志输出的格式语法,日志输出的级别,日志滚动策略等等
比如日志的设计思想:设计模式、加载原理等等
本此分享只是一个抛砖引玉的过程,日志的相关知识还是特别的多,希望后面大家可以分享出更精彩更深入的日志知识和使用技巧。
2、讨论
1、什么情况下,哪些数据信息需要记录日志?
- 请求参数
- 返回参数
- 时间
- 服务器IP(分布式)
2、大家谈一下实际日志开发中一些经验技巧?
- 分布日志排查不方便 --统一日志平台(集中日志收集)ELK
- 统一日志平台:对日志格式有一定要求
- 日志文件数据(服务调用日志)
附录
Asynchronous Loggers for Low-Latency Logging:性能对比
如果您觉得这篇博文对你有帮助,请点赞或者喜欢,让更多的人看到,谢谢!
如果帅气(美丽)、睿智(聪颖),和我一样简单善良的你看到本篇博文中存在问题,请指出,我虚心接受你让我成长的批评,谢谢阅读!
祝你今天开心愉快!
欢迎访问我的csdn博客,我们一同成长!
不管做什么,只要坚持下去就会看到不一样!在路上,不卑不亢!
博客首页 : http://blog.csdn.net/u010648555
© 每天都在变得更好的阿飞
探索Java的日志世界的更多相关文章
- 探索java世界中的日志奥秘
java日志简单介绍 对于一个应用程序来说日志记录是必不可少的一部分.线上问题追踪,基于日志的业务逻辑统计分析等都离不日志.JAVA领域存在多种日志框架,目前常用的日志 ...
- 细说Java主流日志工具库
概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util ...
- Java主流日志工具库
在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息.在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子.我们先来逐一了解一下主流日志工具. 1.java.util.lo ...
- 深入探索Java设计模式之单例模式
单例模式可确保在给定的时间实例中只能创建一个具有全局访问点的对象.这是面向对象编程中最常用的技术之一.尽管它很简单,但从类设计的角度来看可能是最简单的,但是在尝试实现它们之前,必须先解决一些细微的问题 ...
- Java 标准日志工具 Log4j 的使用(附源代码)
源代码下载 Log4j 是事实上的 Java 标准日志工具.会不会用 Log4j 在一定程度上可以说是衡量一个开发人员是否是一位合格的 Java 程序员的标准.如果你是一名 Java 程序员,如果你还 ...
- 探索 Java 同步机制[Monitor Object 并发模式在 Java 同步机制中的实现]
探索 Java 同步机制[Monitor Object 并发模式在 Java 同步机制中的实现] https://www.ibm.com/developerworks/cn/java/j-lo-syn ...
- Java自定义日志输出文件
Java自定义日志输出文件 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender,然后定义每一个Appender的日志级别.打印形式和日志的输出路径 ...
- Java GC 日志详解(转)
Java GC日志可以通过 +PrintGCDetails开启 以ParallelGC为例 YoungGC日志解释如下(图片源地址:这里) : FullGC(图片源地址:这里): http://blo ...
- java Log日志规范
Overview 一个在生产环境里运行的程序如果没有日志是很让维护者提心吊胆的,有太多杂乱又无意义的日志也是令人伤神.程序出现问题时候,从日志里如果发现不了问题可能的原因是很令人受挫的.本文想讨论的是 ...
随机推荐
- Oracle 11g DRCP配置与使用
Oracle 11g DRCP配置与使用Oracle 11g推出了驻留连接池(Database Resident Connection Pool)特性,提供了数据库层面上的连接池管理机制,为应对高并发 ...
- GROUP BY和 HAVING 及 统计函数 执行顺序等
[我理解:where是对最外层结果进行条件筛选,而having是对分组时分组中的数据进行 组内条件筛选,注意:只能进行筛选,不能进行统计或计算,所有统计或计算都要放在最外层的select 后面,无论是 ...
- sqoop的安装与配置
最近需要将MySQL的数据导出到HDFS,所以搜到了sqoop2.跟sqoop1相比,sqoop2的好处是直接使用程序连接到集群上的sqoop,远程操作.流程是需要先创建link也可以理解成要操作的对 ...
- Spark记录-Scala数组
Scala提供了一种数据结构叫作数组,数组是一种存储了相同类型元素的固定大小顺序集合.数组用于存储数据集合,但将数组视为相同类型变量的集合通常更为有用. 可以声明一个数组变量,例如:numbers,使 ...
- [原]JUnit 自定义扩展思路
1. 理解Annotation,http://www.cnblogs.com/mandroid/archive/2011/07/18/2109829.html 2. JUNIT整体执行过程分析,htt ...
- 关于SQL注入,你应该知道的那些事
戴上你的黑帽,现在我们来学习一些关于SQL注入真正有趣的东西.请记住,你们都好好地用这些将要看到的东西,好吗? SQL注入攻击因如下几点而是一种特别有趣的冒险: 1.因为能自动规范输入的框架出现,写出 ...
- linq中let关键字学习
linq中let关键字就是对子查询的一个别名,let子句用于在查询中添加一个新的局部变量,使其在后面的查询中可见. linq中let关键字实例 1.传统下的子查询与LET关键字的区别 C# 代 ...
- Flex 编写 loading 组件
Flex 界面初始化有时那个标准的进度条无法显示,界面长时间会处理空白的状态!我们来自定义一个进度条, 这个进度条加载在 Application 应用程序界面的 <s:Application 标 ...
- 20155217 2016-2017-2 《Java程序设计》第5周学习总结
20155217 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 java中所有错误都会被包装为对象,可以尝试(try)执行程序并捕捉(catch)代 ...
- jinja模板语言
模板 要了解jinja2,那么需要先理解模板的概念.模板在Python的web开发中广泛使用,它能够有效的将业务逻辑和页面逻辑分开,使代码可读性增强.并且更加容易理解和维护. 模板简单来说就是一个其中 ...