查日志
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语句的后面三行
- tail -50 /usr/local/mysql/data/sql-slow.log |grep -3 ‘192.168.0.10’
匹配php错误日志中某一个字段
- tail -100 /data/logs/php/php_error_5.3.log | grep “Memcache::get()”;
查看某一个文件第5行和第10行 sed -n ‘5,10p’ filename 这样你就可以只查看文件的第5行到第10行。
最佳实践
API
// 获取上下文
LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
// 代码中设置日志级别
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
configurations {
compile.exclude module: "spring-boot-starter-logging"
}
configurations {
compile.exclude group "org.springframework.boot" module: "spring-boot-starter-logging"
}
可能是group和module是父子关系
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.0'
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.14.0'
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
gradle官网里compile废弃了?实际跑的时候,用implementation跑不了
logback
中文文档
logback介绍和配置详解
自定义 appender
级别继承:
一种logback整合消息队列的实现
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使用阿里云日志服务来收集容器日志
* and __tag__:__path__: "/usr/local/tomcat/logs/deepdraw.error.log"
Kibana
- 官方文档: Discover
- view surrounding documents