资讯专栏INFORMATION COLUMN

日志深入理解

Moxmi / 2107人阅读

摘要:说明很多软件,系统都会有着自己的日志,记录日志的主要目的是什么呢。可用来分析例子事件查看器里的日志是一个很好的例子。可以定时转存到日志文件中除了数据库不推荐外,使用文件还是使用内存的可能通过写入条数进行估算。

说明

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

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

例子

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 比较流行的一套日志分析系统
自制管理系统

写在最后

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

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29682.html

相关文章

  • 【译】深入理解G1的GC日志(一)

    摘要:表示允许垃圾收集线程处理本次垃圾收集开始前没有处理好的日志缓冲区,这可以确保当前分区的是最新的。垃圾收集线程在完成其他任务的时间展示每个垃圾收集线程的最小最大平均差值和总共时间。 本文翻译自:https://www.redhat.com/en/blog/collecting-and-reading-g1-garbage-collector-logs-part-2?source=auth...

    spacewander 评论0 收藏0
  • 深入理解Java虚拟机》(六)堆内存使用分析,垃圾收集器 GC 日志解读

    摘要:堆内存使用分析,垃圾收集器日志解读重要的东东在中,对象实例都是在堆上创建。机制是由提供,用来清理需要清除的对象,回收堆内存。在中,是由一个被称为垃圾回收器的守护线程执行的。 堆内存使用分析,垃圾收集器 GC 日志解读 重要的东东 在Java中,对象实例都是在堆上创建。一些类信息,常量,静态变量等存储在方法区。堆和方法区都是线程共享的。 GC机制是由JVM提供,用来清理需要清除的对象,...

    CODING 评论0 收藏0
  • Java深入-框架技巧

    摘要:从使用到原理学习线程池关于线程池的使用,及原理分析分析角度新颖面向切面编程的基本用法基于注解的实现在软件开发中,分散于应用中多出的功能被称为横切关注点如事务安全缓存等。 Java 程序媛手把手教你设计模式中的撩妹神技 -- 上篇 遇一人白首,择一城终老,是多么美好的人生境界,她和他历经风雨慢慢变老,回首走过的点点滴滴,依然清楚的记得当初爱情萌芽的模样…… Java 进阶面试问题列表 -...

    chengtao1633 评论0 收藏0
  • 深入理解Linux文件系统与日志分析

    一、inode和block概述文件数据包括元信息与实际数据 (元信息:包含属性的相关信息,实际数据:文件内容)文件是存储在硬盘上的,硬盘的最小存储单位叫做扇区(sector),每个扇区存储512字节。一般连续八个扇区组成一个块(block),一个块是4K大小,是文件存取的最小单位。操作系统读取硬盘的时候,是一次性连续读取多个扇区,即一个块一个块的读取的。block(块)●连续的八个扇区组成一个bl...

    番茄西红柿 评论0 收藏2637

发表评论

0条评论

Moxmi

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<