Linux Ubuntu 12.04 システムを使用しています。このコードを使用して、すべての stdout と stderr + INFO レベルの追加のログをファイルに記録しています。
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
+++
最終編集:
メッセージの長さが2文字未満かどうかを確認するように書き込みを変更し、空白行を削除しました..理由はまだ100%わかりません.
def write(self, msg, level=logging.INFO):
if len(msg) < 2:
pass
else:
self.logger.log(level, msg)