パイソンで簡易的なログの書き込みの仕組みを作ってみよう

今回の内容はログを自作しながら学ぶでGolangで書いたコードをパイソン(Python3)のコードへの書き換えになります。


ログの書き込みは下記のようにします。

ログの書き込み先:/var/log/mylogger/app.log

myloggerディレクトリは今回の自作のログの出力用のディレクトリになります。


最初にmyloggerディレクトリを作成しておきます。

$ sudo mkdir /var/log/mylogger
$ sudo chown root:adm /var/log/mylogger
$ sudo chmod g+ws,o+rx /var/log/mylogger

myloggerディレクトリを作成したら、ディレクトリの権限を所有者をrootにして、グループを、admにします。


myloggerディレクトリにグループには書き込み権限(w)とSGIDあり(s)を付与します。

一般ユーザにも読み込み(r)と書き込み(w)の権限を付与します。




/home/pi/log.pyを作成して、

import logging
import os
from pathlib import Path

# 自作のロガーの設定
dir_path = "/var/log/mylogger"
file_name = "app.log"
full_path = os.path.join(dir_path, file_name)

try:
    # ロガーの設定
    logging.basicConfig(
        filename=full_path,
        level=logging.INFO,
        format='%(asctime)s %(message)s',
        datefmt='%Y/%m/%d %H:%M:%S'
    )
    
    # 書き込み
    logging.info("Hello, my-logger test by python3.")
    
except PermissionError:
    print(f"Error: Permission denied to write to {full_path}")
except Exception as e:
    print(f"Failed to create log file: {e}")

のコードを保存します。


下記のコマンドでコードを実行してみます。

$ python3 /home/pi/log.py

コマンド実行後に

$ less /var/log/mylogger/app.log

を実行してみますと、

YYYY/MM/DD HH:MM:SS Hello, my-logger test by python3.

といった値が記録されています。

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。