为什么要用zap来写日志 原来是写PHP的,一直用的error_log,第一次写Go项目的时候,还真不知道该怎么写日志,后来就按照PHP的写法自己不成规范的捣鼓写.去了新公司之后,发现用的是zap.后来查询 了解了下zap,前同事反应他们很多大公司都在使用zap写日志,GitHub上star 高达7K多,足以说明它受欢迎的程度. 1.zap是Uber开源的日志库: 2.很多大的公司和小的公司都在使用: 3.跟seelog.logrus等类库相比,高性能是它最突出的优势: 我想以上几个原因就已经说…
gin 工具是golang开发中非常有用且有效的工具,有效的提高了开发调试go程序的效率. 为什么要使用gin 我们知道golang是编译型语言,这就表示go程序的每次改动,如果需要查看改动结果都必须重新编译一次,即go build .像我们从事go web的开发,可能是从其他解释型语言跨过来的,就特别的不适应这种调试开发,改完代码需要编译go build.然后,gin的出现就为了解决这种需求. 看下gin 的官方解释 gin是一个简单的命令行实用程序,用于实时重新加载Go Web应用程序. 只…
摘要 日志在整个工程实践中的重要性不言而喻,在选择日志组件的时候也有多方面的考量.详细.正确和及时的反馈是必不可少的,但是整个性能表现是否也是必要考虑的点呢?在长期的实践中发现有的日志组件对于计算资源的消耗十分巨大,这将导致整个服务成本的居高不下.此文从设计原理深度分析了 zap 的设计与实现上的权衡,也希望整个的选择.考量的过程能给其他的技术团队在开发高性能的 Go 组件时带来一定的借鉴意义. 前言 日志作为整个代码行为的记录,是程序执行逻辑和异常最直接的反馈.对于整个系统来说,日志是至关重要…
简述 什么是SeasLog SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便.规范.高效地写日志,以及快速地读取和查询日志. 为什么使用SeasLog 无论在什么应用中,log日志都是架构中不可缺少的一个重要组成部分,它通常是系统或软件.应用的运行记录.通过log的分析,可以方便用户了解系统或软件.应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为.类型喜好.地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很…
一.概述 慢查询日志记录了所有的超过sql语句( 超时参数long_query_time单位 秒),获得表锁定的时间不算作执行时间.慢日志默认写入到参数datadir(数据目录)指定的路径下.默认文件名是[hostname]_slow.log,默认超时是10秒,默认不开启慢查询日志.下面查看慢日志的几个参数: -- 是否开启慢日志 SHOW VARIABLES LIKE 'slow_query_log'; -- 慢日志文件记录位置 SHOW VARIABLES LIKE 'slow_query_…
一.概述 二进制日志(binlog)记录了所有的DDL(数据定义语言)语句和DML(数据操纵语言)语句,但是不包括数据查询语句, 语句以"事件"的形式保存,它描述了数据的更改过程,此日志对灾难时的数据恢复起着极其重要的作用. 1.1 日志的位置和格式 在my.cnf中可以查看log-bin的位置,mysqld将包含所有更新数据的sql命令写入日志文件,位置如下图所示: 下面通过环境变量来查看当前binlog位置和状态 -- 通过环境变量来查看位置 SHOW VARIABLES LIKE…
一.mysql日志概述 在mysql中,有4种不同的日志,分别是错误日志,二进制日志(binlog日志),查询日志,慢查询日志.这此日志记录着数据库在不同方面的踪迹(区别sql server里只有errorlog日志,并借助了dmv来做分析).接下来几篇里详细介绍这几种日志的作用和使用方法,利用这些日志做好维护和调优. 错误日志是mysql中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息.当数据库出现任何故障导致无法正常使用时,可以首先查…
为什么要使用Supervisord 17年第一次写Go项目的时候,用Go开发项目倒没没费多大劲,很快就开发完成了.到了在测试环境部署的时候,由于不知道有 Supervisord 这个软件,着实花了些功夫.总不能跟开发环境一样,直接执行编译生成的二进制文件吧,即使 后台执行了,万一它挂了,没人知道,即使测试人员发现了,开发还得登录到服务器再次启动下这个二进制文件.很明显这个解决方案没有任何意义,后来就在网上找解决方案. 然后,咨询Go开发的前同事,发现了Supervisord,喜出望外.它就是最优…
glide 是golang项目开发中是特别重要的软件,没有它,golang的项目可能都无法发布. 为什么要使用glide 平时我们开发Go项目的时候,使用第三方的包的时候都直接使用go get 去获取第三方的包,但是go get获取到的包是项目的develop分支,我们开发的时候倒是可以不怎么关注.但是如果到了生产环境,直接使用go get 是有很大风险的,因为,众所周知,develop是开发分支,维护者会把新的代码push到开发分支,如果我们使用go get的话,可能我们每次发布版本获取到的第…
一.binlog 二进制其它选项 在二进制日志记录了数据的变化过程,对于数据的完整性和安全性起着非常重要作用.在mysql中还提供了一些其它参数选项,来进行更小粒度的管理. 1.1 binlog-do-db=db_name 该选项告诉主服务器,当前db_name库会更新记录到二进制日志中,其它所有没有显示指定的数据库更新时不记录到二进制日志中. 1.2 binlog-ignore-db=db_name 该选项告诉主服务器,当前db_name库不会更新记录到二进制日志中,其它所有没有显示指定的数据…