
문제 확인을 단순화하기 위해 wim 등을 사용하여 큰(~6000줄) 로그 파일을 표시하는 방식을 변경하고 싶습니다.
error
패턴(예 : , warning
, info
...)을 기반으로 로그의 일부 줄을 강조 표시하고/하거나 다른 일부 줄을 숨기고 싶습니다 .
어떤 도구를 사용할 수 있나요? 쉘 스크립트만 필요한가요? 프로세스 후에 검색 작업을 수행하기 위해 less, vim, ...을 사용하여 출력을 읽을 수 있다는 것이 중요합니다!
편집: 로그의 일부:
2016/10/25 12:19:24.403355 INFO <ServiceManager.cpp#2614 TID#3> Security object has NOT been parsed
2016/10/25 12:19:24.403369 INFO <ServiceManager.cpp#1263 TID#3> Service object sequence started
2016/10/25 12:19:24.403372 DBG <ServiceManager.cpp#1276 TID#3> preinvoke succeeded
답변1
awk
Valentin B. 솔루션과 같은 쉘 스크립트를 추천합니다 .
$ cat colorize
awk '
function color(c,s) {
printf("\033[%dm%s\033[0m\n",30+c,s)
}
/error/ {color(1,$0);next}
/success/ {color(2,$0);next}
/warning/ {color(3,$0);next}
/INFO/ {color(4,$0);next}
/DBG/ {color(5,$0);next}
{print}
' $1
색상화된 출력을 대화식으로 보려면 less
원시 모드를 사용합니다. 예:
colorize mylog.txt | less -R
답변2
awk
, 다른 답변에서 언급했듯이 확실히 첫 번째로 도달할 수 있는 도구입니다.
그러나 장기적으로 볼 때 이것이 유일한 도구는 아닙니다.
AL 램버트logtool
로그 파일 후처리를 위해 특별히 설계되었으며 정규식으로 가득 찬 파일을 13가지 색상 각각에 할당할 수 있는 복잡한(아쉽게도 문서화도 잘 되어 있지 않은) 구성 시스템을 갖추고 있습니다.
고양이 *.log | 로그 도구
TAI64N 타임스탬프가 있는 로그를 이해한다는 차이점이 있습니다.
여기에 다음을 추가하세요.
log-color-highlight
colout
ccze
- 이스트반 카라시(István Karaszi)
colorize
- 라도반 가라빅(Radovan Garabík)
grc
- 로그 감시자
- 나막신
- 요아킴 안데르손의
colortail
- 무지개
- lnav
착색에 대한 문제
아쉽게도 이러한 도구 중 일부는 색상 지정을 매우 잘못 수행합니다. terminfo에서 setaf
/ setab
등을 사용하는 대신 제어 시퀀스를 하드와이어합니다 .
또한 색상 지정은 미묘한 이유로 까다로우며 이를 올바르게 수행하는 색상 지정 프로그램은 거의 없습니다. 완전히 올바르게 하려면 컬러라이저가 자동 여백과 DEC VT를 처리해야 합니다.보류 중인 줄 바꿈아직 어떤 컬러라이저도 본 적이 없는 메커니즘입니다. GNU에는 grep
이 분야에서 상당히 유명한 색상화 버그가 있지만 이는 grep
.
추가 읽기
답변3
확인 후 를 이용하여 터미널에 컬러 텍스트를 직접 출력할 수 있습니다 awk
. 제공한 예제를 사용하면 displayLog.awk
다음 코드가 포함된 awk 스크립트 파일(예: )을 생성할 수 있습니다.
# output INFO lines in cyan
$3 == "INFO" {
print "\033[36m"$0"\033[0m"
next
}
# don't display DBG lines
$3 == "DBG" {
next
}
# output WARNING lines in bright yellow
$3 == "WARNING" {
print "\033[1;33m"$0"\033[0m"
next
}
# output ERROR lines in bright red
$3 == "ERROR" {
print "\033[1;31m"$0"\033[0m"
next
}
# If you want to skip all other lines, comment next line
{print}
그런 다음 깨끗한 터미널 창을 열고 디스플레이가 무제한인지 확인하고(한 번에 6000줄을 모두 표시할 수 있음) 다음과 같이 사용하십시오.
$ awk -f displayLog.awk log.txt
또는사용자처럼jlliagre그의 솔루션에서 제안한 대로 원시 모드로 파이프하십시오 less
.
$ awk -f displayLog.awk log.txt | less -R
그러면 효과가 있을 것입니다! awk
내 대답의 샘플 코드를 기반으로 색상과 표시하려는 줄을 조작할 수 있습니다 . 색상 코딩에 대해 자세히 알아보기여기.
편집하다
전체 줄 대신 한 단어만 색칠하려면(예를 들어 ERROR를 빨간색으로만 표시하려는 경우) 다음을 수행하십시오.
$3 == "ERROR" {
$3 = "\033[1;31m"$3"\033[0m"
print
next
}
답변4
패턴(예: 오류, 경고, 정보...)을 기반으로 로그의 일부 행을 강조 표시하려면 아래 명령을 사용하십시오.
grep -rn "pattern" <logfile>
이 명령은 위에서 언급한 패턴을 갖는 로그 파일의 전체 행을 모두 표시합니다.