저는 Linux Ubuntu 12.04 시스템을 사용하고 있습니다. 내가 여기있다, 나는 항상 빈 줄 뒤에있어 항목을받을 때마다 몇 가지 이유를 들어python - stdout을 로깅하지만 각 항목에 두 번째 빈 줄이 표시됨
class LogFile(object):
def __init__(self, name=None):
self.logger = logging.getLogger(name)
def write(self, msg, level=logging.INFO):
self.logger.log(level, msg)
def flush(self):
for handler in self.logger.handlers:
handler.flush()
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',
datefmt='%m-%d-%y %H:%M:%S',
filename='logging.log')
sys.stdout = LogFile('stdout')
sys.stderr = LogFile('stderr')
.. 모든 표준 출력과 표준 에러 + 파일에 대한 정보 수준에 대한 자세한 로그를 기록 할이 코드를 사용하고있다 내 로그의 작은 출력 :
08-09-12 09:52:54 stdout INFO CheckCon: Checking Portal access.
08-09-12 09:52:54 stdout INFO
08-09-12 09:52:54 stdout INFO CheckCon: Portal ping successful.
08-09-12 09:52:54 stdout INFO
08-09-12 09:53:08 stderr INFO Bottle server starting up (using PasteServer())...
08-09-12 09:53:08 stderr INFO Listening on http://0.0.0.0:8654/
08-09-12 09:53:08 stderr INFO Hit Ctrl-C to quit.
08-09-12 09:53:08 stdout INFO URI: Generated https://*****
08-09-12 09:53:08 stdout INFO
08-09-12 09:53:08 stdout INFO CheckCon: Checking Portal access.
08-09-12 09:53:08 stdout INFO
08-09-12 09:53:08 stdout INFO serving on 0.0.0.0:8654 view at http://127.0.0.1:8654
08-09-12 09:53:08 stdout INFO
08-09-12 09:53:08 stdout INFO CheckCon: Google ping successful.
08-09-12 09:53:08 stdout INFO
이것은 파일에서 빈 stdout 행과 전체 빈 행을 모두 보는 방법입니다. 병 서버의 출력이 빈 줄이 아니라 각 줄 사이에 빈 줄이있는 것 같습니다.
누구든지이 문제를 일으키는 원인이 무엇인지 또는 어떻게 방지 할 수 있는지 알고 있습니까?
편집: 그래서
수정 형식 지금 내 로그 \ : 나는 logging.info 내 모든 인쇄를 변경 제안에서
, 나는 여전히 병 및 붙여 넣기 서버가 정기적으로 인쇄를하고 문제가 format='%(asctime)s %(levelname)-4s: %(message)s'
: 내가 추가 빈 줄을 볼 수있는에서
08-09-12 12:44:40 INFO: URI: Generated https://****
08-09-12 12:44:40 INFO: CheckCon: Checking Portal access.
08-09-12 12:44:40 INFO: serving on 0.0.0.0:9002 view at http://127.0.0.1:9002
08-09-12 12:44:40 INFO:
08-09-12 12:44:40 INFO: CheckCon: Google ping successful.
08-09-12 12:44:40 INFO: FullW: opening url: ****
08-09-12 12:44:40 INFO: FullW: showing.
08-09-12 12:44:40 INFO: LOOP: starting.
이 때문에 빈 정보 라인의도 너무 가까이 이제 점점 ..
편집 출력을 명확히 : 흥미로운 비트 :
+++08-09-12 13:01:04 stdout INFO serving on 0.0.0.0:9002 view at http://127.0.0.1:9002+++
+++08-09-12 13:01:04 stdout INFO
+++
최종 편집 :
은 MSG의 길이가 2 개 문자 아래에 있는지 확인하기 위해 내 쓰기를 변경하고, 그 빈 줄을 제거 .. 아직도 이유의 확실하지 않은 100 %.
def write(self, msg, level=logging.INFO):
if len(msg) < 2:
pass
else:
self.logger.log(level, msg)
게다가,'level ='매개 변수를'__init __()'에 두는 것이 좋습니다. 'write()'가 아닙니다. – glglgl
죄송합니다. glglgl 무슨 뜻인지 이해가 안 되니? –
명확성을 위해 형식이'+++ % (asctime) s (name) -12s % (levelname) -8s % (message) s +++'로 설정된 실행에서 어떻게 보이나요? – Deestan