linux打印日志命令
很多同学在进行编程学习时缺乏系统学习的资料。本页面基于linux打印日志命令内容,从基础理论到综合实战,通过实用的知识类文章,标准的编程教程,丰富的视频课程,为您在linux打印日志命令相关知识领域提供全面立体的资料补充。同时还包含 labelfor、label标签、lambda 的知识内容,欢迎查阅!
linux打印日志命令相关知识
-
linux查询日志命令总结【背景】 排查线上环境问题,少不了去线上查日志。而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能。 【命令】 Linux查看命令有多种:tail,head,cat,tac,more (一) tail 命令 tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ] 参数: 1)-f 循环读取 2)-q 不显示处理信息 3)-v 显示详细的处理信息 4)-c Number 从 Number 字节位置读取指定文件 5)-n Number 从
-
小白入门学习打日志前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y记得之前写过一篇:《阿里巴巴 Java开发手册》读后感,之前自学时由于没怎么接触过打“日志”,所以《手册》中的“日志规约”我就先放一边去了。而之前写了一篇:在公司做的项目和自己在学校做的有什么区别?中就有提到:公司的项目不会有e.printStackTrace();这种代码的存在。因为这打印出来的错误信息没有日期、等级等等,分析起来不方便。在工作中去服务器上查日志又是一个非常非常常见的操作,所以当初我又写了一篇 工作中常用到的Linux命令,里边就谈到了查日志时常用的Linux命令。想着,既然接触日志也有一段时间了,不妨在回看《手册》,看看有什么要注意的地方,于是就有了这篇笔记。一、Java打日志的基础以前自己自学的时候,排查问题只会写下面的代码:try { // doSomething} ca
-
Android如何安全地打印日志如何打印日志?这不是很简单,直接使用android.util.Log这个类不就行了?然而,日志属于非常敏感的信息;逆向工程师在逆向你的程序的时候,本来需要捕捉你程序的各种输出,然后进行推测,顺藤摸瓜然后得到需要的信息;一旦你的日志泄漏,无异于门户洞开,破解你的程序如入无人之境。安全的概念本来就是相对的,如果破解你程序的代价远远大于破解得到的价值,那么就可以认为程序是“安全的”;这里就分析一下,为了提高程序的安全性,在打印日志的时候应该注意什么。首先看看绝大部分公司以及开发者的做法:日志开关+日志类为了在release版本里面没有日志输出,一个最简单的想法是:把所有打印日志的语句放在一个if(DEBUG)的语句里面;在日常开发的时候,DEBUG开关打开,发布正式版本的时候关闭这个开关即可,大致思路如下:1 2 3 4 5 6 7 8 9 10// LogUtil.java public class LogUtil { pr
-
Linux之ls命令ls 命令是 linux 下最常用的命令。ls 命令就是 list 的缩写缺省下 ls 用来打印出当前目录的清单,如果 ls 指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限 (包括目录、文件夹、文件权限)查看目录信息等等。ls 命令在日常的 linux 操作中用的很多! 1.命令格式: ls [选项] [目录名] 2.命令功能: 列出目标目录中所有的子目录和文件。 3.常用参数: 4.常用范例: 例一:列出 /home/r
linux打印日志命令相关课程
linux打印日志命令相关教程
- 3. 打印自己的 Gradle 日志 如果我们要打印编译日志,我们要怎么做呢?Gradle 也为我们提供了一个 logger 属性,它是一个 Logger 实例。我们在 build.gradle 中定义一个名为 logTest 的任务,打印不同级别的日志。如下所示:task logTest{ doLast{ logger.debug("This is Debug Log Message") logger.info("This is Info Log Message") logger.warn("This is Warn Log Message") logger.lifecycle("This is Lifecycle Log Message") logger.quiet("This is Quiet Log Message") logger.error("This is Erroe Log Message") }}我们按照上面所降到的 我们不添加任何的额外命令,直接执行gradle logTest 我们看下输出,我们会发现只输出了 LIFECYCLE 级别以上的日志:$ gradle logTest> Configure project :orderWARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html> Task :app:logTestThis is Warn Log MessageThis is Lifecycle Log MessageThis is Quiet Log MessageThis is Erroe Log MessageDeprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.Use '--warning-mode all' to show the individual deprecation warnings.See https://docs.gradle.org/6.0.1/userguide/command_line_interface.html#sec:command_line_warningsBUILD SUCCESSFUL in 1s1 actionable task: 1 executed那么下面我们在 gradle 后依次添加 -q 、-i 、-d 命令来过滤不同级别的日志。
- 3. 主动打印日志 这里还是以前面异常处理类 ExceptionController 为例,按照如下方式可以主动输出日志:<?phpnamespace app\controller\Study;use app\BaseController;use app\controller\Service\StudentService;use think\facade\Log;class ExceptionController extends BaseController{ public function testException() { try{ $studentService = new StudentService(); $studentService->update(); }catch(\Exception $exception){ Log::write('test:'.$exception->getMessage()); return json("内部错误:".$exception->getMessage()); } return json("请求成功"); }}Tips: 其中 Log::write('test:'.$exception->getMessage()) 表示主动记录日志。请求接口之后,如下图所示展示的主动打印的日志内容:
- 2. 日志相关指令说明 在 ngx_http_log_module 模块中,只3个指令,分别是 access_log、log_format 和 open_log_file_cache。这些指令具体的格式如下:Syntax: access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];access_log off;Default: access_log logs/access.log combined;Context: http, server, location, if in location, limit_exceptSyntax: log_format name [escape=default|json|none] string ...;Default: log_format combined "...";Context: httpSyntax: open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];open_log_file_cache off;Default: open_log_file_cache off;Context: http, server, locationngx_http_log_module 模块用来按某个格式来记录请求的日志。模块中的 log_format 指令就是用来设置打印日志的格式,该指令中可以使用 Nginx 中的各种变量,比如保存远端ip地址的变量$remote_addr等。一个简单的示例如下:log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';接下来是 access_log 指令。参考前面的指令格式。关闭日志记录,直接是写access_log off,如果打开 access 日志,它的写法是:access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];path 是指定日志的写入路径,默认写入 logs/access.log 文件中。注意日志路径可以包变量,但是会一些限制。format 就是指定打的日志格式,也就是前面 log_format 指令定义好的格式。每个格式会设置一个格式名,这里取对应的格式名称,默认使用预定义的combined。buffer 用来指定日志写入时的缓存大小。默认是64k。gzip 日志写入前先进行压缩。压缩率可以指定,从1到9数值越大压缩比越高,同时压缩的速度也越慢。默认是1。flush 设置缓存的有效时间。如果超过flush指定的时间,缓存中的内容将被清空。if 条件判断。如果指定的条件计算为0或空字符串,那么该请求不会写入日志。access_log 指令示例:# 确保 Nginx 源码编译时安装了zlib库access_log /path/to/log.gz combined gzip flush=5m;map $status $loggable { ~^[23] 0; default 1;}# if条件判断, 如果请求的相应码是2xx或者3xx,那么$loggable变量为0,这样请求日志不会被打印access_log /path/to/access.log main if=$loggable;每一条日志记录的写入都是先打开文件再写入记录,然后关闭日志文件。如果你的日志文件路径中使用了变量,如access_log /var/logs/$host/access.log,为提高性能,可以使用 open_log_file_cache 指令设置日志文件描述符的缓存。可以通过open_log_file_cache off关闭该缓存。该指令的几个参数选项说明如下:max: 设置缓存中最多容纳的文件描述符数量,如果被占满,采用LRU算法将描述符关闭。inactive: 设置缓存存活时间,默认是10s。min_uses: 在inactive时间段内,日志文件最少使用几次,该日志文件描述符记入缓存,默认是1次。valid: 设置多久对日志文件名进行检查,看是否发生变化,默认是60s。open_log_file_cache max=100 inactive=15s valid=1m min_uses=2;最后 error_log 是 错误日志配置指令,主要记录客户端访问 Nginx 出错时的日志,它不不支持自定义日志格式。通过检查错误日志,可以快速定位线上问题,所以也是很重要的。关闭错误日志的方式和 access_log不一样,没有error_log off这样关错误日志的用法,反而会将错误日志打到名为 off 的文件中。常用的关闭方式是:error_log /dev/null; 就像在 Linux 系统中,输出到 /dev/null 的内容实际上等价于丢弃一样。
- Linux 日志文件系统 前小节介绍了早期的 Linux 文件系统,本小节介绍 Linux 日志文件系统,日志文件系统是给 Linux 操作系统增加了一些安全相关能力,日志文件系统和早期的文件系统相比,它并不是先把数据写到中间存储设备,然后再写到存储设备索引节点的,而是先把数据写道临时生成的文件中(称为日志),然后数据成功同步到存储设备和索引节点表,再删除对应的日志数据。本小节介绍 Linux 常见的日志文件系统。
- 2. 过滤 Gradel 日志 我们日常开发过中编译时,在控制台看到的日志并不是所有的编译日志。我们看到的日志是 LIFECYCLE 级别及级别在它之上所有日志信息。我们执行gradle asR命令打 Release 包的日志,如下所示:如果我们编译时要过滤日志,我们就需要在执行命令的时候在 gradle 后面加上不同的选项,具体如下表所示: 命令 输出日志的级别 没有任何 输出 LIFECYCLE 及更高 -q 输出 QUIET 及更高 -i 输出 INFO 及更高 -d 输出 DEBUG 及更高
- 2.2 日志级别控制 有时候,我们想指定打印的日志的级别,可以通过配置文件来设置。实例:# 设置日志级别logging.level.root=WARN上面的配置表示项目日志的记录级别为 WARN ,所以会打印 WARN 及优先级更高的 ERROR 级别的日志。此时我们编写一个测试类,看看具体打印日志的情况。实例:@SpringBootTestclass LogTest { private Logger logger = LoggerFactory.getLogger(this.getClass()); @Test void testPrintLog() { logger.trace("trace log"); logger.debug("debug log"); logger.info("info log"); logger.warn("warn log"); logger.error("error log"); }}运行测试类,控制台打印内容如下,说明我们指定的日志级别生效了。控制台打印指定级别日志Tips: logging.level.root=WARN 中的 root 可以改为指定包名或类名,表示设置指定包或者类的日志级别。
linux打印日志命令相关搜索
-
label
labelfor
label标签
lambda
lambda表达式
lamda
lang
last
latin
latin1
layers
layui
leave
left
leftarrow
legend
length
lengths
length函数
less