暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

如何正确查看日志?

风尘博客 2019-10-28
523

在程序中我们通过日志系统将程序运行时的某些日志写入到日志文件中,如果某个服务运行异常了,此时我们就可以根据日志中的记录,辅助查找产生bug
的原因。

一、cat

cat
Concatenate
的缩写,该命令主要功能是将一个文件的内容连续显示在屏幕上面。

1.1 参数说明

    -a : 相当于-vET 的整合参数,可列出一些特殊字符,而不是空白而已;
    -b :列出行号,仅针对非空白行做行号显示,空白行不标行号;
    -e :将结尾的断行字符$显示出来;
    -n : 打印行号,连同空白行也会有行号,与-b的参数不同

    1.2 适用场景

    1.一般文件内容行数较少时,如40
    行之内,适合用cat
    2.如果是一般的DOS
    文件时,就需要特别留意一些奇怪的符号,例如断行与[Tab]
    等,要显示出来,就得加入-a
    之类的参数了。

    1.3 Demo

    查看java.txt
    的内容:

      [root@root]# cat java.txt 
      test cat command
      hello word


      #####

      查看java.txt
      的内容,并且显示行号:

        [root@root]# cat -n java.txt 
        1 test cat command
        2 hello word
        3
        4 #####

        二、tac

        tac
         的功能跟cat
        相反,cat
        是由:第一行到最后一行连续显示在屏幕上,而tac
        则是:由最后一行到第一行反向在屏幕上显示出来

          [root@root]# tac  java.txt 
          #####


          hello word
          test cat command

          三、head

          head
           :显示文件开头的内容,以行为单位,默认文件开头的前10
          行。

          3.1 参数说明

            -n<行数> 显示的行数
            -q 隐藏文件名
            -v 显示文件名
            -c<字节> 显示字节数

            3.2 Demo

            显示 readme.md
             文件前12

              [root@root]# head -n 12  readme.md 
              ### 技术框架选型
              - Gradle
              - Spring Boot
              - MyBatis Plus
              - Dubbo
              - Slf4j + logback
              - MySQL PostgreSQL
              - Redis


              ### 工程模板使用简易指南
              - 目前的应用名称都叫做 dusty (包括:包名、日志路径名 之类),可以全局搜索替换,包名需要重命名
              - 自动化工具,参考 http://www.dustyblog.cn

              四、tail
              (推荐)

              查看文件的内容,也是以行为单位,默认10
              行,从尾往前看

              tial -f
               被用来动态监听Java日志,开发联调经常使用到,它一般跟grep
               一起搭档使用。

              4.1 参数说明

                -f 循环读取
                -q 不显示处理信息
                -v 显示详细的处理信息
                -c<数目> 显示的字节数
                -n<行数> 显示文件的尾部 n 行内容

                4.2 Demo

                显示readme.md
                文件的最后12

                  [root@root]# tail -n 12  readme.md


                  ### 工程模板使用简易指南
                  - 目前的应用名称都叫做 dusty (包括:包名、日志路径名 之类),可以全局搜索替换,包名需要重命名
                  - 自动化工具,参考 http://www.dustyblog.cn


                  ### 常用命令
                  - 测试资源拷贝及变量替换 gradle -x test processResources -Penv=local
                  - 打包+完整的清理 gradle clean bootJar -x test -Penv=local 。如果需要刷新jar包,加上 -refresh-dependencies
                  - 打包-快速模式 gradle bootJar -x test -Penv=local
                  - 本地运行 1)先找到jar路径:find . -name "*.jar",一般在 build/libs/,2)java -jar dusty.jar
                  - 本地swagger接口验证 http://localhost:8080/dusty/swagger-ui.html
                  - 调试: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5005 -jar xxx.jar

                  持续检测readme.md
                  的内容

                    [root@root]# tail -f readme.md
                    tail -f readme.md
                    - 目前的应用名称都叫做 dusty (包括:包名、日志路径名 之类),可以全局搜索替换,包名需要重命名
                    - 自动化工具,参考 http://www.dustyblog.cn


                    ### 常用命令
                    - 测试资源拷贝及变量替换 gradle -x test processResources -Penv=local
                    - 打包+完整的清理 gradle clean bootJar -x test -Penv=local 。如果需要刷新jar包,加上 -refresh-dependencies
                    - 打包-快速模式 gradle bootJar -x test -Penv=local
                    - 本地运行 1)先找到jar路径:find . -name "*.jar",一般在 build/libs/,2)java -jar dusty.jar
                    - 本地swagger接口验证 http://localhost:8080/dusty/swagger-ui.html
                    - 调试: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5005 -jar xxx.jar


                    <==要等到输入[ctrl]-c 之后才离开tail 这个命令的检测

                    持续检测readme.md
                    的内容,并匹配dusty
                    关键字。匹配关键字,一般用grep
                     ,tail
                     一般也会跟grep
                     搭档使用。

                      [root@root]# tail -f readme.md | grep dusty


                      <==要等到输入[ctrl]-c 之后才离开tail 这个命令的检测

                      五、more

                      more
                       :一页一页地显示文件内容

                      5.1 参数说明

                        -num :一次显示的行数
                        -p :不以卷动的方式显示每一页,而是先清除萤幕后再显示内容
                        -c -p 相似,不同的是先显示内容再清除其他旧资料
                        -s 当遇到有连续两行以上的空白行,就代换为一行的空白行
                        +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示
                        -u :不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)
                        +num : 从第 num 行开始显示
                        fileNames :欲显示内容的文档,可为复数个数

                        5.2 常用操作命令

                          [root@root]# more readme.md 
                          ### 技术框架选型
                          - Gradle
                          - Spring Boot
                          - MyBatis Plus
                          - Dubbo
                          - Slf4j + logback
                          - MySQL PostgreSQL
                          - Redis


                          ### 工程模板使用简易指南
                          - 目前的应用名称都叫做 dusty (包括:包名、日志路径名 之类),可以全局搜索替换,包名需要重命名
                          - 自动化工具,参考 http://www.dustyblog.cn
                          --More--(67%)

                          如果more
                          后面接的文件内容行数大于屏幕输出的行数时,就会出现类似上面的情况。重点在最后一行,最后一行会显示出目前显示的百分比,而且还可以在最后一行输入一些有用的命令。在more
                          这个程序的运行过程中,你可以使用一些常用的操作命令:

                          1.空格键:代表往下翻一页2.Enter
                          :代表往下滚动一行
                          3./字符串
                          :代表在这个显示的内容当中,向下查询字符串这个关键字
                          4.:f
                          :立刻显示出文件名以及目前显示的行数
                          5.q
                          :代表立刻离开more
                          ,不再显示该文件内容
                          6.b
                          [Ctrl]-b
                          :代表往回翻页,不过这操作只对文件有用,对管道无用。

                          最常用的是:按q离开,按空格键往下翻页,按b往回翻页,以及/字符串搜索功能

                          5.3 适用场景

                          more
                          使用日志比较大的文件查看,可以一页一页查看,不会让前面的数据看不到。

                          5.4 Demo

                          查看前两页内容:

                            [root@root]# more -2 readme.md
                            ...(内容省略)...

                            搜寻dusty
                            关键字:

                              /dusty

                              输入了/
                              之后,光标就会跑到最下面一行,并且等待你的输入,你输入了字符串并按下[Enter]
                              之后,more
                              就会开始向下查询该字符串,而重复查询同一个字符串,可以直接按下n
                              即可。最后不想看了,就按下q
                              离开more

                              六、less
                              (推荐)

                              less
                               与 more
                               类似,但less
                              的用法比起more
                              又更加有弹性。

                              1.使用了less
                              时,就可以使用下、下等按键的功能来往前往后翻看文件。
                              2.less
                              里头可以拥有更多的查询功能:不止可以向下查询,也可以向上查询。

                              6.1 常用操作命令

                                空格键:往下翻动一页
                                [pagedown]: 向下翻动一页
                                [pageup]: 向上翻动一页
                                Enter : 代表往下滚动一行
                                y :向前滚动一行
                                /字符串:向下搜索"字符串"的功能
                                ?字符串:向上搜索"字符串"的功能
                                n:重复前一个搜索(与 / ? 有关)
                                N:反向重复前一个搜索(与 / ? 有关)
                                q: 离开less这个程序
                                b 向后翻一页

                                6.2 适用场景

                                less
                                适合日志比较大的文件查看,可以一页一页查看,并且比more
                                更灵活,也可以动态查看日志。


                                文章转载自风尘博客,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                评论