Python의 logging
모듈의 출력에 색상을 추가하십시오.
Colorlog는 현재 Python 3.6 이상이 필요합니다. 이전 버전 (5.xx 미만)은 Python 2.6 이상을 지원합니다.
Colorama는 Windows에서 Colorlog를 사용할 때 필요한 종속성으로 포함되며 초기화됩니다.
이 라이브러리는 10 년이 넘었으며 대부분의 생애 동안 광범위한 파이썬 버전 세트를 지원하여 새로운 기능을 추가하기가 어려운 라이브러리가되었습니다. Colorlog 6은 새로운 기능을보다 쉽게 추가 할 수 있도록 호환성을 뒤집을 수 있지만 여전히 모든 변경 사항이나 기능 요청을 허용하지는 않습니다. Colorlog 4는 필수 버그 수정을 받아 들일 수 있지만 적극적으로 유지 관리되지 않아야하며 주요 변경 사항이나 새로운 기능을 허용하지 않아야합니다.
PYPI에서 다음과 같이 설치하십시오.
pip install colorlog
몇몇 Linux 배포판은 공식 패키지 (Debian, Arch, Fedora, Gentoo, Opensuse 및 Ubuntu)를 제공하며, 다른 사람들은 사용자가 제공 한 패키지 (BSD 포트, Conda)를 가지고 있습니다.
import colorlog
handler = colorlog . StreamHandler ()
handler . setFormatter ( colorlog . ColoredFormatter (
'%(log_color)s%(levelname)s:%(name)s:%(message)s' ))
logger = colorlog . getLogger ( 'example' )
logger . addHandler ( handler )
ColoredFormatter
클래스는 몇 가지 주장을합니다.
format
: 메시지를 출력하는 데 사용되는 형식 문자열 (필수).datefmt
: 선택 날짜 형식은 기본 클래스로 전달됩니다. logging.Formatter
참조하십시오.reset
: 출력이 이미 하나로 끝나지 않는 한 컬러 리셋 코드를 메시지 출력에 암시 적으로 추가합니다. 기본값은 True
으로.log_colors
: 레코드 레벨 이름을 색상 이름으로 매핑합니다. 기본값은 colorlog.default_log_colors
또는 아래 예제에서 찾을 수 있습니다.secondary_log_colors
: log_colors
스타일 매핑에 이름을 매핑하여 형식 문자열에서 사용할 수있는 추가 색상을 정의합니다. 예를 들어 아래를 참조하십시오.style
: Python 3.2 이상에서 사용할 수 있습니다. logging.Formatter
참조하십시오.색상 탈출 코드는 형식 문자열에 매개 변수를 추가하여 로그 레코드 레벨에 따라 선택할 수 있습니다.
log_color
: 레코드 레벨과 관련된 색상을 반환합니다.<name>_log_color
: Formatter에 2 차 색상이 구성된 경우 레코드 레벨을 기준으로 다른 색상을 반환합니다 (아래 secondary_log_colors
참조). 로그 레벨의 색상을 구성 할 때 쉼표와 결합하여 여러 탈출 코드를 한 번에 사용할 수 있지만 (형식 문자열에서 직접 사용할 수는 없음). 예를 들어, black,bg_white
흰색 배경에서 검은 색 텍스트의 탈출 코드를 사용합니다.
다음 탈출 코드는 형식 문자열로 사용할 수 있습니다.
{color}
, fg_{color}
, bg_{color}
: 전경 및 배경색.bold
, bold_{color}
, fg_bold_{color}
, bg_bold_{color}
: BOLD/BRIGHT COLORS.thin
, thin_{color}
, fg_thin_{color}
: 얇은 색 (터미널 종속).reset
: 모든 형식을 지우십시오 (전경 및 배경색 모두).사용 가능한 색상 이름은 다음과 같습니다.
black
red
green
yellow
blue
,purple
cyan
white
"밝은"색상을 사용할 수도 있습니다. 이것들은 표준 ANSI 코드가 아니며, 이에 대한 지원은 다른 터미널에 따라 크게 다릅니다.
light_black
light_red
light_green
light_yellow
light_blue
light_purple
light_cyan
light_white
다음 코드는 각 인수의 기본값을 사용하여 로깅 설정에서 사용할 ColoredFormatter
생성합니다.
from colorlog import ColoredFormatter
formatter = ColoredFormatter (
"%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s" ,
datefmt = None ,
reset = True ,
log_colors = {
'DEBUG' : 'cyan' ,
'INFO' : 'green' ,
'WARNING' : 'yellow' ,
'ERROR' : 'red' ,
'CRITICAL' : 'red,bg_white' ,
},
secondary_log_colors = {},
style = '%'
)
secondary_log_colors
사용 보조 로그 색상은 로그 레벨을 기준으로 하나 이상의 색상을 선택하는 방법입니다. secondary_log_colors
의 각 키는 형식 문자열에서 사용할 수있는 속성을 추가합니다 ( message_log_color
message
됩니다). log_colors
인수와 동일한 해당 값을 갖습니다.
다음 예제는 기본 로그 색상을 사용하여 레벨 이름을 강조하고 error
및 critical
레벨 로그 메시지에 대한 메시지를 빨간색으로 강조 표시합니다.
from colorlog import ColoredFormatter
formatter = ColoredFormatter (
"%(log_color)s%(levelname)-8s%(reset)s %(message_log_color)s%(message)s" ,
secondary_log_colors = {
'message' : {
'ERROR' : 'red' ,
'CRITICAL' : 'red'
}
}
)
dictConfig
와 함께 logging . config . dictConfig ({
'formatters' : {
'colored' : {
'()' : 'colorlog.ColoredFormatter' ,
'format' : "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s"
}
}
})
전체 예제 사전은 tests/test_colorlog.py
에서 찾을 수 있습니다.
fileConfig
와 함께 ...
[formatters]
keys =color
[formatter_color]
class =colorlog.ColoredFormatter
format =%(log_color)s%(levelname)-8s%(reset)s %(bg_blue)s[%(name)s]%(reset)s %(message)s from fileConfig
datefmt =%m-%d %H:%M:%S
그러한 인수로 생성 된 ColoredFormatter의 인스턴스는 color
Formatter를 사용하도록 구성된 모든 핸들러가 사용합니다.
전체 예제 구성은 tests/test_config.ini
에서 찾을 수 있습니다.
ColoredFormatter는 logging.addLevelName
과 함께 추가 된 사용자 정의 로그 레벨과 함께 작동합니다.
import logging , colorlog
TRACE = 5
logging . addLevelName ( TRACE , 'TRACE' )
formatter = colorlog . ColoredFormatter ( log_colors = { 'TRACE' : 'yellow' })
handler = logging . StreamHandler ()
handler . setFormatter ( formatter )
logger = logging . getLogger ( 'example' )
logger . addHandler ( handler )
logger . setLevel ( 'TRACE' )
logger . log ( TRACE , 'a message using a custom level' )
위의 예와 유사한 테스트는 tests/test_colorlog.py
에서 찾을 수 있습니다.
Colorlog는 유지 보수 모드입니다. 버그 픽스가 게시되도록 시도하지만 Python 2.6+ 및 Python 3+와의 호환성으로 인해 기능을 추가하기가 어려운 코드베이스가됩니다. 기존 사용자의 호환성을 뒤로 깰 수있는 변경 사항은 고려되지 않습니다.
유용한 파이썬 로깅을 개선하기위한보다 현대적인 라이브러리가 있습니다.
Github는 Colorlog에 의존하는 프로젝트 목록을 제공합니다.
일부 얼리 어답터에는 Errbot, Pythran 및 Zenlog가 포함되었습니다.
Copyright (C) 2012-2021 Sam Clements [email protected]
이에 따라이 소프트웨어 및 관련 문서 파일 ( "소프트웨어")의 사본을 얻는 사람에게 허가는 제한없이 소프트웨어를 처리 할 수있는 사람에게 무료로 제공됩니다. , 소프트웨어의 사본을 게시, 배포, 서브 리센스 및/또는 판매하고, 소프트웨어가 제공하도록하는 사람을 다음과 같은 조건에 따라 할 수 있도록합니다.
위의 저작권 통지 및이 권한 통지는 소프트웨어의 모든 사본 또는 실질적인 부분에 포함되어야합니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 사용 또는 기타 거래와 관련하여 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않아야합니다. 소프트웨어.