查日志

linux系统中,利用grep打印匹配的上下几行

如果在只是想匹配模式的上下几行,grep可以实现。

$grep -5 ‘parttern’ inputfile //打印匹配行的前后5行

$grep -C 5 ‘parttern’ inputfile //打印匹配行的前后5行

$grep -A 5 ‘parttern’ inputfile //打印匹配行的后5行

$grep -B 5 ‘parttern’ inputfile //打印匹配行的前5行

查看mysql慢日志中ip地址为192.168.0.10发送过来的SQL语句的后面三行

  1. tail -50 /usr/local/mysql/data/sql-slow.log |grep -3 ‘192.168.0.10’

匹配php错误日志中某一个字段

  1. tail -100 /data/logs/php/php_error_5.3.log | grep “Memcache::get()”;

查看某一个文件第5行和第10行 sed -n ‘5,10p’ filename 这样你就可以只查看文件的第5行到第10行。

最佳实践

日志 - 图1

API

  1. // 获取上下文
  2. LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
  3. // 代码中设置日志级别
  4. logger.setLevel(Level.INFO);

log4j2+

SpringBoot—整合log4j2入门和log4j2.xml配置详解
Spring Boot 整合 slf4j+log4j2 实现日志管理
需要依赖:log4j-api, log4j-core, log4j-slf4j-impl, slf4j-api
排除spring-boot-starter-validation

  1. configurations {
  2. compile.exclude module: "spring-boot-starter-logging"
  3. }
  1. configurations {
  2. compile.exclude group "org.springframework.boot" module: "spring-boot-starter-logging"
  3. }

可能是group和module是父子关系

  1. compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.0'
  2. compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.0'
  3. compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.14.0'
  4. compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'

gradle官网里compile废弃了?实际跑的时候,用implementation跑不了

logback

中文文档
logback介绍和配置详解
自定义 appender
级别继承:
日志 - 图2

一种logback整合消息队列的实现

日志 - 图3

SLF4J

Java 简易日志门面(Simple Logging Facade for Java,缩写 SLF4J
类似于控制反转

比如:slf4j 定义了一套日志接口,项目中使用的日志框架是logback,开发中调用的所有接口都是 slf4j 的,不直接使用 logback,调用是 自己的工程调用 slf4j 的接口,slf4j 的接口去调用 logback 的实现,可以看到整个过程应用程序并没有直接使用 logback,当项目需要更换更加优秀的日志框架时(如log4j2)只需要引入 log4j2 的 jar 和 Llg4j2 对应的配置文件即可,完全不用更改 Java 代码中的日志相关的代码 logger.info(“xxx”),也不用修改日志相关的类的导入的包( import org.slf4j.Logger; import org.slf4j.LoggerFactory;) 总结:使用日志接口便于更换为其他日志框架。

阿里云SLS

容器服务Windows Kubernetes使用阿里云日志服务来收集容器日志

  1. * and __tag__:__path__: "/usr/local/tomcat/logs/deepdraw.error.log"

Kibana

image.png