로그를 "ANSI-fy"로 만드는 방법?


10

최근에는 명령 행 도구가 로그 출력에 멋진 ANSI 색상을 사용하는 경향이있었습니다 (예 : NPM 및 다수의 nodejs 기반 도구, rvm, docker 및 기타 "현대"도구).

이렇게하면 화면 (*)을 읽는 것이 좋지만 다양한 원격 실행 도구 및 웹 기반 모니터링 솔루션과 같이 ANSI를 잘 처리하지 않는 전송 또는 로그 파일로 출력을 파이프하려는 경우 그리 좋지 않습니다. 좀 더 성숙한 도구는 출력이 TTY가 아니고 색상을 비활성화 할 때를 감지 할 수 있지만 새로운 "사용자 친화적 인"CLI를 사용하지 않는 경우가 많았습니다. 또 다른 프로세스를 통한 출력.

출력을 통해 sed를 s/\x1B\[[0-9]*\w//g수행하면 작업이 완료 되는 것 같지만 정규식을 붙여 넣은 모든 스크립트에 더 깔끔한 접근법이 있습니까?

(*) 최소한 도구가 어두운 배경 터미널에 짙은 빨간색으로 오류를 표시하려고 할 때까지.


2
참조 : unix.stackexchange.com/questions/14684/... - unix.stackexchange.com/questions/111899/... stackoverflow.com/questions/17998978/... superuser.com/questions/380772/... - 4+ 질문 사이 이상 3 개 사이트에서 3 년 동안 정규식 교체 / 제거 도구를 사용하는 것에 대한 답변을 얻었습니다. 더 좋은 것이 없을 것 같아요.
Zoredache

토론을 위해 보이는 유일한 것은 어떤 정규식이 어떤 상황에 가장 적합한 지입니다.
Zoredache

1
is there a cleaner approach then just copy pasting regular expressions into all of my scripts?-정리 필터를 '/ usr / local / bin / stripttycolor.sh` 또는 다른 파일로 저장 하시겠습니까? 그렇게하면 정규 표현식을 단일 위치로 제한합니까?
Zoredache

3
출력을 파일에 기록 할 것임을 알면 가장 쉬운 방법은 --no-color플래그 로 실행하는 것입니다 (적어도 NPM의 경우) . 다른 많은 명령들도 비슷한 플래그를 가지고 있습니다.
Moshe Katz

@MosheKatz : 불행히도 예를 들어 모든 명령이 수행되는 것은 아닙니다 bower.
거스

답변:


1

"ansifilter -p"는 당신에게 유용 할 것입니다 ...

Fedora 저장소에 있습니다. -p는 일반 출력을 지정합니다.

Name        : ansifilter
From repo   : updates
Summary     : ANSI terminal escape code converter
URL         : http://www.andre-simon.de/doku/ansifilter/ansifilter.php
License     : GPLv3+
Description : Ansifilter handles text files containing ANSI terminal escape codes.
            : The command sequences may be stripped or be interpreted to generate formatted
            : output (HTML, RTF, TeX, LaTeX, BBCode).

잘 작동합니다. 이제 우분투 용 패키지로 만들어야합니다 :-)
Guss
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.