ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • tail , color, multiple grep
    리눅스 2022. 8. 15. 02:55
    728x90

    tail 와 sed를 이용해 로그를 좀 더 가독성 있게 관찰하고 싶었다.

     

    1 )  웹 로그를 tail 로 관찰할때 \n 개행 문자가 한줄로 표현되어 가독성이 떨어지는 경우 

    기존)

      tail -f log.log

      아래와 같이 \n이 있는 경우 한줄로 표현 됨

    {"@timestamp":"2022-08-14T17:48:15.763Z","severity":"ERROR","service":"test","trace":"e5330b399f93bb6b","span":"e5330b399f93bb6b","parent":"","exportable":"","pid":"44593","thread":"http-nio-18080-exec-9","class":"c.d.h.a.exception.GlobalExceptionHandler","rest":"org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' not supported\n\tat org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:253)\n\tat org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:442)\n\tat org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:383)\n\tat org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:125)\n}

     

    해결 )

      tail -f log.log | sed 's/\\n/\n/g'

      개행문자가 개행되어 stream에 프린트 됨

    \tat org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.handleNoMatch(RequestMappingInfoHandlerMapping.java:253)
    \tat org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.lookupHandlerMethod(AbstractHandlerMethodMapping.java:442)
    \tat org.springframework.web.servlet.handler.AbstractHandlerMethodMapping.getHandlerInternal(AbstractHandlerMethodMapping.java:383)
    \tat org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:125)
    \tat org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping.getHandlerInternal(RequestMappingInfoHandlerMapping.java:67)
    \tat org.springframework.web.servlet.handler.AbstractHandlerMapping.getHandler(AbstractHandlerMapping.java:498)
    \tat org.springframework.web.servlet.DispatcherServlet.getHandler(DispatcherServlet.java:1264)
    \tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1046)
    \tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)

     


     

    2) 특정 키워드를 기반으로 라인 색상을 다르게 주고 싶은 경우

    new line 갱신 & 로그 레벨별 색상 적용

    tail -f log.log | sed -e 's/\\n/\n/g' \
        -e 's/\(.*INFO.*\)/\x1B[32m\1\x1B[39m/' \
        -e 's/\(.*WARN.*\)/\x1B[33m\1\x1B[39m/'\
        -e 's/\(.*ERROR.*\)/\x1B[31m\1\x1B[39m/'\

    로그 레벨별로 색상 출력, 뉴 라인 개행되어 출력을 확인 할 수 있다.

     

    2) 기존 색상은 유지하되, grep 을 이용해 필터

        multiple grep with colors

     - refresh, WARN, ERROR 3가지를 grep 하고, 해당 결과에 대해서는 sed를 이용해 컬러를 적용한다.

    tail -f log.log | grep --line-buffered "refresh\|WARN\|ERROR" | sed -e 's/\\n/\n/g' \
        -e 's/\(.*INFO.*\)/\x1B[32m\1\x1B[39m/' \
        -e 's/\(.*WARN.*\)/\x1B[33m\1\x1B[39m/'\
        -e 's/\(.*ERROR.*\)/\x1B[31m\1\x1B[39m/'\
    728x90

    '리눅스' 카테고리의 다른 글

    find command  (0) 2022.03.12
    stress  (0) 2022.02.03
    macOS 사용포트 나열 하기  (0) 2021.12.25
    scp 사용법  (0) 2021.02.06
    시스템 호스트 이름 변경  (0) 2021.01.23
Designed by Tistory.