说明

很多软件,系统都会有着自己的日志,记录日志的主要目的是什么呢。

日志可以记录谁谁谁在什么时候做了什么事情,这些记录可以让我们知道用户是怎么操作系统报的错误。可用来找错
也可以通过一些日志分析软件去分析,最近用户做那些操作比较多。搜索什么关键词比较多,有利于运营的策略制定。可用来分析

例子

windows 事件查看器

windows 事件查看器里的 windows日志是一个很好的例子。
它分为应用程序日志,安全日志,系统日志

应用程序日志:主要记录系统软件应用的错误
安全日志:比较敏感的系统操作,如管理员登录,修改密码
系统日志:系统相关的操作,如windows的服务操作

所有的日志都记录了
错误级别,日期时间,来源,任务类型,系统用户,计算机,日志内容

通过日志记录的内容,可以轻易的得知软件的错误是什么。

它还提供了筛选和排序的功能,方便我们去查找错误。

基础概念

主要记录的日志内容

错误级别
日期时间
来源
    IP
    项目名
任务类型
日志内容
    操作内容的简写
    用户的请求参数,可用 json

项目的日志没有windows日志里的那么细,因为我们面对的范围比它小太多了,有些内容就没有必要记录

记录格式

json:这个可以很好的区分数据是那一项里面的,但是在直接查看上不是很直观,需要取出转格式,有些内容还会有换行的。
字符串:直接查看日志文件比较直观,但是如果需要导入分析工具时,需要写正则一项项匹配出来,再导入

日志存储方式

数据库
    个人十分不推荐的记录方式,因为日志只要有人访问程序就会写库。访问少倒无所谓,访问大会大量消耗数据库的性能
    写数据库慢,高并发的时候会锁表
文件
    这个比数据库好很多,也比较传统的做法。会占用系统IO,写操作太多时会导致系统卡顿。不考虑被攻击时可直接使用
    统计和查找没有数据库那么功能丰富,可以直接导至分析系统中进行操作。
    扩展:知道自己服务器的 IO 写入速率,去估算每分钟可以写多少日志,
        假如服务器写入速率是 100k/s
        其他软件预计占用 30k/s
        去除容差 20k/s
        那可用的是 50k/s
        每分钟可写 51200b 的日志
        再设每条日志 500b
        那每分钟级最多可写102条日志
内存
    读写速度很快,但是内存一般不会很大,普遍4g以上。去除其他应用的内存开销,可用的内存并不多。可以定时转存到日志文件中

除了数据库不推荐外,使用文件还是使用内存的可能通过写入条数进行估算。使用什么方式

程序实现

规范

php 的 [psr-3](https://laravel-china.org/docs/psr/psr-3-logger-interface/1607)

难点:

1. 要记日志的地方那么多,怎么对其进行简化操作
    通过URL匹配来记录大概操作
    通过php异常处理记录错误日志,与 [上一期文章](https://segmentfault.com/a/1190000016824772) 关联
    特殊的需求做直接记录处理,如:搜索关键词词频统计最近热门关键词

管理

elk: elsticsearch + logstash + kibana 比较流行的一套日志分析系统
自制管理系统

写在最后

日志不管是对系统还是对个人来说都是很有必要存在的东西。

身边的事物总会在某个时间点消逝,我们需要珍惜,留有美好的记忆,
去记录它,直到某天返回翻看,回忆起当时留有的酸甜苦辣。


jani
62 声望2 粉丝

该家伙很懒,什么都没留下~