日志最佳实战

日志最佳实战

1. logback

2. 开发debug,生产info , 异常中用error

3. 使用self4j的占位符方式输入日志。多个参数输出,参数项使用数组的形式。举例 : logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);

此种形式在确定日志输出级别前,不会拼接字符串。 // LOGGER.isDebugEnabled()

4. 访问日志和错误日志记录到不同的文件中,方便查询

5. 外部接口输入和输出处加记录日志,方便调试

6. 所有怀疑影响性能的地方加上日志记录,不要怕日志多

7. 明确日志的每一项输出

8. 异常日志输出出现异常的具体位置。log中记录内容 e:logger.info("Exception is : ",e);

9. 日志中包含充分的信息,日志中的时间戳要精确到毫秒。

10. ERROR:运行时异常以及预期之外的错误。

WARN:预期之外的运行时状况,不一定是错误的情况。

INFO:运行时产生的事件。

DEBUG:与程序运行时的流程相关的详细信息。

11. 每个记录器对象都有一个运行时对应的严重性级别。该级别可以通过配置文件或代码的方式来进行设置。如果没有显式指定严重性级别,则会根据记录器名称的层次结构关系

往上进行查找,直到找到一个设置了严重性级别的名称为止。比如名称为“com.myapp.web.IndexController”的记录器对象,如果没有显式指定其严重性级别,则会依次

查找是否有为名称“com.myapp.web”、“com.myapp”和“com”指定的严重性级别。如果仍然没有找到,则使用根记录器配置的值。

12. 前一天的日志自动压缩

13. MDC和NDC来处理多用户同时访问日志信息。NDC和MDC是log4j用于存储应用程序的上下文信息(context infomation),从而便于在log中使用这些上下文信息。

NDC采用了一个类似栈的机制来push存储上下文信息,每一个线程都独立地储存上下文信息。比如说一个servlet就可以针对每一个request创建对应的NDC,储存客户端

地址等等信息。相关的信息使用NDC.push(message); 在log的时候将信息输出。在相应的PatternLayout中使用”%x”来输出存储的上下文信息MDC内部使用了类似map

的机制来存储信息,相对应的方法,MDC.put(key,value);在配置PatternLayout的时候使用:%X{key}来输出对应的value

14. 日志聚合与分析

参考文章:http://www.ibm.com/developerworks/cn/java/j-lo-practicelog/

http://www.cnblogs.com/zhengyun_ustc/archive/2012/12/15/logging_bp.html

http://www.oschina.net/translate/why-use-sl4j-over-log4j-for-logging

时间: 2024-10-05 17:02:13

日志最佳实战的相关文章

Storm实时日志分析实战

项目背景 最近公司做一个项目,用户需要对网站访问者的广告点击/浏览记录进行实时统计分析,分析结果存入数据库,输出报表.我们采用了Kafka+Storm+Zookeeper的解决方案.之前没有接触过,经过一段时间的研究,最终完成了项目.接下来的内容我将介绍我们的解决方案.供大家参考.我们的系统结构如下: 总体结构介绍 业务系统把点击/浏览广告业务日志统一按规定的格式发送到Kafka集群中,不同的业务日志可以分别发送给Kafka不同的主题.Storm集群中运行了我们的实时统计拓扑,该统计拓扑分别从K

MySQL 5.7--------SSL连接最佳实战

                                                                                         MySQL 5.7--------SSL连接最佳实战 1. 背景 * 在生产环境下,安全总是无法忽视的问题,数据库安全则是重中之重,因为所有的数据都存放在数据库中 * 当使用非加密方式连接MySQL数据库时,在网络中传输的所有信息都是明文的,可以被网络中所有人截取,敏感信息可能被泄露.在传送敏感信息(如密码)时,可以采用

vue2 入门 教程 单页应用最佳实战[*****]

推荐 vue2 入门 教程 -------- 看过其他的,再看作者的,很赞 vue2 入门 教程 单页应用最佳实战 :  具体在 https://github.com/MeCKodo/vue-tutorial ----------------------------- 通过本文,我们可以学习到许多关于vue的特性. 1.了解了vue-cli脚手架 2.初步对webpack有了一些了解和认识 3.如何用.vue愉快的开发 4.使用vuex进行组件通信 5.路由(子路由)的应用 6.使用 vue-d

MySQL--------基于binlog实现闪回最佳实战

1. 背景 * 为了数据安全,搭建了主从.实时主从备份只能防止硬件问题,比如主库的硬盘损坏.但对于误操作,则无能为力.比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新.当操作被同步到从库上后,则主从都"回天无力". * 闪回用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带where条件的update.delete操作,传统的恢复方式是利用全备+二进制日志前滚进行恢复

异常处理最佳实战

1. 只在必要使用异常的地方才使用异常,不要用异常去控制程序的流程..慎地使用异常,异常捕获的代价非常高昂,异常使用过多会严重影响程序的性能. 2. 切忌使用空catch块.千万不要使用空的catch块,空的catch块意味着你在程序中隐藏了错误和异常,并且很可能导致程序出现不可控的执行结果.如果你非常肯定捕获到的异常 不会以任何方式对程序造成影响,最好用Log日志将该异常进行记录,以便日后方便更新和维护. 3. 异常信息放到一个单独的文件中 4. 在finally中释放资源 5. 如果客户端可

Docker--------docker-compose编排最佳实战

1. 背景 Docker Compose是一个用来定义和运行复杂应用的Docker工具.使用Compose,你可以在一个文件中定义一个多容器应用,然后使用一条命令来启动你的应用,完成一切准备工作. Docker Compose使用yml文件格式定义描述. 2. 安装方式 * 离线安装 下载可执行文件至执行目录 [[email protected] ~]# curl -L https://github.com/docker/compose/releases/download/1.14.0-rc2/

[svc]influxdb最佳实战-监控对比

最近在搞容器的监控,遇到influxdb这个库,搞了两天,些许明白了些套路,做个记录,备忘.... 小结如下: influxdb go语言编写 默认情况influxdb创建的库关联autogen的RP(存储策略),即数据会保留永久 监控和日志的区别 最近搞监控,所谓监控就是监控服务肉体是否健康(还活着/生病? 各项指标是否正常?) 区分日志搜集: 分析服务的精神状态是健康(服务的一个履历/日记) 如何做一个监控 参考: https://segmentfault.com/a/11900000110

DataWorks调度配置最佳实战

摘要: DataWorks基于MaxCompute作为核心的计算.存储引擎,提供了海量数据的离线加工分析.数据挖掘的能力.通过DataWorks,可对数据进行数据传输.数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最后将数据提取到其他数据系统. 摘要:DataWorks基于MaxCompute作为核心的计算.存储引擎,提供了海量数据的离线加工分析.数据挖掘的能力.通过DataWorks,可对数据进行数据传输.数据转换等相关操作,从不同的数据存储引入数据,对数据进行转化处理,最

日志系统实战(三)-分布式跟踪的Net实现

介绍 在大型系统开发调试中,跨系统之间联调开始变得不好使了.莫名其妙一个错误爆出来了,日志虽然有记录,但到底是哪里出问题了呢? 是ios端参数传的不对?还是A系统或B系统提供的接口导致?相信大家碰到不少,大多数问题不大,但排查起来比较费劲. 下面,我们来具体看下实现. 目录 1:概述 2:web环境 3:多线程环境 4:异步环境 5:性能,大数据量,隐私安全 6:总结 一:概述 一句话总结:通过一个TraceId把整个请求,形成一个调用链. 这样无论任何地方报错,只要拿TraceId去系统查下,