홈>
현재 특정 함수 "export_log"를 호출하면 처음부터 앱과의 사용자 상호 작용에 관한 모든 이전 로그 기록이 출력되는 응용 프로그램을 설계하고 있습니다. 처음에는 모든 로그를 목록에 저장 한 다음 파일로 출력했지만 더 나은 방법을 찾고있었습니다. 필자는 필자의 요구에 완벽하게 보이는 Python 로깅 모듈을 발견했지만 제대로 작동하도록하는 것은 약간 익숙하지 않습니다.
아래는 나의 최소 작업 예입니다. func1은 기본적으로 func2에 의해 호출 될 때마다 "foo"를 출력하는 로거입니다. 현재 스크립트를 처음 실행할 때 빈 파일이 생성됩니다. 그러나 스크립트를 두 번 실행하면 파일이 추가되지만 예상되지는 않습니다. func1에서 생성 된 모든 이전 출력 기록을 저장하고 싶습니다.
export_log 함수가 요청시 호출 될 때만 로그 파일을 출력하도록하려면 어떻게해야합니까?import logging
global logger
logger = logging.getLogger('log_file')
logger.setLevel(logging.INFO)
#
def export_log():
global logger
fh = logging.FileHandler('logFile.log')
fh.setLevel(logging.INFO)
logger.addHandler(fh)
# run 3 times
def func1():
global logger
logger.info("foo")
def func2():
for i in range(3):
func1()
func2()
export_log()
# Desired output upon calling the export_log() function:
# foo
# foo
# foo
# Actual output:
# File is initially blank after running script once.
# always appends "foo" every time the script is run again
수정:
와이즈 비즈
Tkinter 버튼으로 호출되기 때문에이 함수가 필요합니다 :
export_log
. 기본적으로 버튼을 클릭했을 때만 모든 로그 기록을 파일로 출력하고 싶습니다.
Button(controls, text="Export", command = export_log)
- 답변 # 1
관련 자료
- 내 데이터베이스에 장치 고유 '식별자'를 저장할 수 있습니까? (PHP)
- jwt - redis와 같은 키 값 저장소에 암호 재설정 토큰을 저장하지 않는 좋은 이유가 있습니까?
- python - 두 목록의 출력을 목록의 개별 값에 저장할 수 있습니까?
- C ++의 열거 형에 정적 포인터 주소를 저장하는 방법이 있습니까?
- machine learning - 내부적으로 훈련/검증 분할이 발생합니까? 아니면 훈련 세트와 테스트 세트가 하나뿐입니까?
- javascript - 파일을 React 상태로 저장하는 방법이 있습니까?
- android - 사용자 로그인 후 앱 이름 및 앱 아이콘 변경을 변경할 수있는 방법이 있습니까?
- database - 어쨌든 NoSQL db에 파일을 저장하고 PostgreSQL db에 파일 링크 (NoSQL)를 저장할 수 있습니까?
관련 질문
- python : 일대다 관계 flask-sqlalchemy를 식별하는 적절한 방법입니까?
- PYTHON-최소 3자리 숫자 반환
- python : PyCharm은 dict 생성 속성의 확인되지 않은 속성에 대해 경고합니다.
- python : 지수 형식/과학 표기법 없이 십진수를 인쇄하는 방법은 무엇입니까?
- python : opencv에서 인수 오류가 계속 발생합니까?
- python : Sphinx는 :param 및 :return을 제대로 인식하지 못합니다.
- python : super가 항상 __init__에서 호출되어야 하는 이유
- python : 값이 두 번 이상 나타나면 값을 취하는 목록 만들기
- bash 스크립트에서 올바른 Python 설치를 동적으로 선택하십시오.
- python : 파이썬 함수에서 하드 코딩된 문자열 값을 피하는 방법
이 경우 가능한 해결책은 데이터를
io.StringIO()
에 저장하는 것입니다. 버튼을 누르면 파일로 저장합니다 :