Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbian 8.0(NOOBS Ver1.9.2)を使用して開発中。

【スポンサーリンク】

ログのファイル出力

【スポンサーリンク】

本日はログをファイルに出力する方法を紹介したいと思います。ファイルをオープンして、ログを書き込む方法をとloggingモジュールを使用する方法の2つを記載したいと思います。

ファイルにログを書き込む方法

こちらは非常に簡単です。open関数でテキストを開き、write関数でテキストを書き込みます。下記のサンプルはテキストを書き込んだ時間を先頭に付けています。

※この方法でもログを出力することができますが、ログを出力するというにより、ファイルにアクセスする方法として理解した方がよいと思います。

#-*- coding: utf-8 -*-
import datetime,time

def addTime(logtext):
    return str(datetime.datetime.now()) +' ' + logtext

f = open("write.txt","w")

nowtime = str(datetime.datetime.now()) +' '
f.write(addTime("ログ出力のテスト1\n"))
time.sleep(1)
f.write(addTime("ログ出力のテスト2\n"))

f.close()

f = open("write.txt","a")
f.write(addTime("ログ出力のテスト3\n"))
time.sleep(1)
f.write(addTime("ログ出力のテスト4\n"))

f.close()

openの第2引数ですが、aオプションを指定するとファイルの末尾にテキストを追記してくれます。

 

loggingモジュールを使用する方法

まず、setLevelでどのレベルまでログを出力するか設定します。DEBUG、INFO、WARN、ERROR、CRITICALのレベルがありますが、logging.DEBUGと設定すると全レベルのログが出力されます。

次にログの出力フォーマットを設定します。タイムスタンプ、ログレベル、メッセージの並びでログテキストが出力されます。

ハンドラを定義します。ハンドラはいろいろな種類が用意されています。ファイルに出力する場合は、logging.FileHandlerを使用します。これでファイルにログを出力することが可能になります。サンプルコードは以下になります。

 

# -*- coding:utf-8 -*-
import logging

logger = logging.getLogger()
logger.setLevel(logging.DEBUG)

formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')

handler = logging.FileHandler(filename='log.txt')
handler.setLevel(logging.DEBUG)
handler.setFormatter(formatter)

logger.addHandler(handler)

logger.debug('debugText')
logger.info('infoText')
logger.warn('warnText')
logger.error('errorText')
logger.critical('criticalText')