터미널 출력을 색칠하는 도구를 만들어 보았습니다.
6614 단어 monitoring로그리눅스Terminalcolor
소개
요 전날 여기 의 기사를 보고 매우 편리할 것 같았기 때문에, 여러가지 기능 추가해 툴로 해 보았습니다.
사용법
이런 식으로 파이프로 연결하여 사용합니다.
$ tail -f hoge.log | pipecolor
파일 지정으로 cat
상당한 동작을 합니다.
$ pipecolor hoge.log
또한 Linux 한정이지만 PID 지정으로 실행중인 프로세스에서 출력을 가져올 수도 있습니다.
$ pipecolor -p 10000
또, 출력이 단말인가 파일인가는 판정하고 있으므로, 디폴트에서는 파일에의 리디렉션시에는 색칠하지 않습니다.
$ tail -f hoge.log | pipecolor > no_color.log # no_color.logは色付けなし
$ tail -f hoge.log | pipecolor --mode always > color.log # color.logは色付けあり
동작 데모는 이런 느낌입니다.
(INFO 행을 녹색, ERROR 행을 빨간색으로 색칠해 보았습니다)

설치
릴리즈
Rust로 쓰여 있으므로 환경 구축이 끝난 분은 이하에서도 OK입니다.
$ cargo install pipecolor
설정
색상 설정 파일을 준비합니다. 기본적으로 ~/.pipecolor.toml
를 읽습니다.
또, --config
옵션으로 패스 지정도 가능합니다.
간단한 설정
[[lines]]
pat = "ERROR.*"
colors = ["Red"]
tokens = []
pat
에 매치 시키는 정규 표현을, colors
에 색을 지정합니다.
이 경우 정규 표현에 매치한 부분 전체가 Red
가 됩니다.
그룹핑으로 색으로 구분
[[lines]]
pat = "(ERROR).*"
colors = ["Red", "LightRed"]
tokens = []
정규 표현에서는 그룹핑 지정을 할 수 있어, 각 그룹의 색은 colors
의 2 번째째 이후에 씁니다.
(첫 번째 색상은 어떤 그룹도 아닌 부분입니다)
이 경우 ERROR
가 LightRed
이고 .*
부분이 Red
입니다.
여러 색 설정
[[lines]]
pat = "(ERROR).*"
colors = ["Red", "LightRed"]
tokens = []
[[lines]]
pat = "(INFO).*"
colors = ["Green", "LightGreen"]
tokens = []
lines
는 복수 설정할 수 있습니다. 이 설정은 위의 동작 데모에서 사용한 "ERROR
가 빨간색, INFO
가 녹색"입니다.
특정 문자열 하이라이트
일치하는 행 중 특정 문자열만 강조 표시할 수도 있습니다.
[[lines]]
pat = "^(.*?) .*? .*? \\[(.*?)\\] \".*?\" .*? .*? \".*?\" \"(.*?)\""
colors = ["White", "LightGreen", "LightBlue", "Green"]
[[lines.tokens]]
pat = "GET"
colors = ["LightCyan"]
[[lines.tokens]]
pat = "POST"
colors = ["LightYellow"]
[[lines.tokens]]
pat = "HEAD"
colors = ["LightMagenta"]
이것은 Apache 로그를 가정한 설정입니다. GET
/POST
/HEAD
에 대해서 각각 색칠하고 있습니다.

색상 지정
사용할 수있는 색상은 현재 이하입니다.
Usable color
블랙
블루
Cyan
Default
그린
LightBlack
LightBlue
LightCyan
LightGreen
LightMagenta
LightRed
LightWhite
LightYellow
Magenta
레드
화이트
Yellow
Reference
이 문제에 관하여(터미널 출력을 색칠하는 도구를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dalance/items/b5cab68177f539239058
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이런 식으로 파이프로 연결하여 사용합니다.
$ tail -f hoge.log | pipecolor
파일 지정으로
cat
상당한 동작을 합니다.$ pipecolor hoge.log
또한 Linux 한정이지만 PID 지정으로 실행중인 프로세스에서 출력을 가져올 수도 있습니다.
$ pipecolor -p 10000
또, 출력이 단말인가 파일인가는 판정하고 있으므로, 디폴트에서는 파일에의 리디렉션시에는 색칠하지 않습니다.
$ tail -f hoge.log | pipecolor > no_color.log # no_color.logは色付けなし
$ tail -f hoge.log | pipecolor --mode always > color.log # color.logは色付けあり
동작 데모는 이런 느낌입니다.
(INFO 행을 녹색, ERROR 행을 빨간색으로 색칠해 보았습니다)

설치
릴리즈
Rust로 쓰여 있으므로 환경 구축이 끝난 분은 이하에서도 OK입니다.
$ cargo install pipecolor
설정
색상 설정 파일을 준비합니다. 기본적으로 ~/.pipecolor.toml
를 읽습니다.
또, --config
옵션으로 패스 지정도 가능합니다.
간단한 설정
[[lines]]
pat = "ERROR.*"
colors = ["Red"]
tokens = []
pat
에 매치 시키는 정규 표현을, colors
에 색을 지정합니다.
이 경우 정규 표현에 매치한 부분 전체가 Red
가 됩니다.
그룹핑으로 색으로 구분
[[lines]]
pat = "(ERROR).*"
colors = ["Red", "LightRed"]
tokens = []
정규 표현에서는 그룹핑 지정을 할 수 있어, 각 그룹의 색은 colors
의 2 번째째 이후에 씁니다.
(첫 번째 색상은 어떤 그룹도 아닌 부분입니다)
이 경우 ERROR
가 LightRed
이고 .*
부분이 Red
입니다.
여러 색 설정
[[lines]]
pat = "(ERROR).*"
colors = ["Red", "LightRed"]
tokens = []
[[lines]]
pat = "(INFO).*"
colors = ["Green", "LightGreen"]
tokens = []
lines
는 복수 설정할 수 있습니다. 이 설정은 위의 동작 데모에서 사용한 "ERROR
가 빨간색, INFO
가 녹색"입니다.
특정 문자열 하이라이트
일치하는 행 중 특정 문자열만 강조 표시할 수도 있습니다.
[[lines]]
pat = "^(.*?) .*? .*? \\[(.*?)\\] \".*?\" .*? .*? \".*?\" \"(.*?)\""
colors = ["White", "LightGreen", "LightBlue", "Green"]
[[lines.tokens]]
pat = "GET"
colors = ["LightCyan"]
[[lines.tokens]]
pat = "POST"
colors = ["LightYellow"]
[[lines.tokens]]
pat = "HEAD"
colors = ["LightMagenta"]
이것은 Apache 로그를 가정한 설정입니다. GET
/POST
/HEAD
에 대해서 각각 색칠하고 있습니다.

색상 지정
사용할 수있는 색상은 현재 이하입니다.
Usable color
블랙
블루
Cyan
Default
그린
LightBlack
LightBlue
LightCyan
LightGreen
LightMagenta
LightRed
LightWhite
LightYellow
Magenta
레드
화이트
Yellow
Reference
이 문제에 관하여(터미널 출력을 색칠하는 도구를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/dalance/items/b5cab68177f539239058
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ cargo install pipecolor
색상 설정 파일을 준비합니다. 기본적으로
~/.pipecolor.toml
를 읽습니다.또,
--config
옵션으로 패스 지정도 가능합니다.간단한 설정
[[lines]]
pat = "ERROR.*"
colors = ["Red"]
tokens = []
pat
에 매치 시키는 정규 표현을, colors
에 색을 지정합니다.이 경우 정규 표현에 매치한 부분 전체가
Red
가 됩니다.그룹핑으로 색으로 구분
[[lines]]
pat = "(ERROR).*"
colors = ["Red", "LightRed"]
tokens = []
정규 표현에서는 그룹핑 지정을 할 수 있어, 각 그룹의 색은
colors
의 2 번째째 이후에 씁니다.(첫 번째 색상은 어떤 그룹도 아닌 부분입니다)
이 경우
ERROR
가 LightRed
이고 .*
부분이 Red
입니다.여러 색 설정
[[lines]]
pat = "(ERROR).*"
colors = ["Red", "LightRed"]
tokens = []
[[lines]]
pat = "(INFO).*"
colors = ["Green", "LightGreen"]
tokens = []
lines
는 복수 설정할 수 있습니다. 이 설정은 위의 동작 데모에서 사용한 "ERROR
가 빨간색, INFO
가 녹색"입니다.특정 문자열 하이라이트
일치하는 행 중 특정 문자열만 강조 표시할 수도 있습니다.
[[lines]]
pat = "^(.*?) .*? .*? \\[(.*?)\\] \".*?\" .*? .*? \".*?\" \"(.*?)\""
colors = ["White", "LightGreen", "LightBlue", "Green"]
[[lines.tokens]]
pat = "GET"
colors = ["LightCyan"]
[[lines.tokens]]
pat = "POST"
colors = ["LightYellow"]
[[lines.tokens]]
pat = "HEAD"
colors = ["LightMagenta"]
이것은 Apache 로그를 가정한 설정입니다.
GET
/POST
/HEAD
에 대해서 각각 색칠하고 있습니다.
색상 지정
사용할 수있는 색상은 현재 이하입니다.
Usable color
블랙
블루
Cyan
Default
그린
LightBlack
LightBlue
LightCyan
LightGreen
LightMagenta
LightRed
LightWhite
LightYellow
Magenta
레드
화이트
Yellow
Reference
이 문제에 관하여(터미널 출력을 색칠하는 도구를 만들어 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/dalance/items/b5cab68177f539239058텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)