#ログ用プログラム

from datetime import datetime
from dateutil import tz
from config import log as config
import os
import inspect

JST = tz.gettz('Asia/Tokyo')
UTC = tz.gettz("UTC")

global log_dir
log_dir='/'

def set_dir(d):
    global log_dir
    log_dir = d
    return

def get_filepath(dt):
    global log_dir
    filepath=log_dir+'/'+dt.strftime(config.FILE_FORMAT)+'.log'
    return filepath

#debug
def d(text):
    dt_now = datetime.now(JST)
    if(config.LEVEL<config.D):
        return
    with open(get_filepath(dt_now), 'a') as fout:
        print("D,"
                +dt_now.strftime(config.DT_FORMAT)+","
                +os.path.basename(inspect.stack()[1].filename)+","
                +inspect.stack()[1].function+"(),"
                +text, file=fout)
    return

#info
def i(text):
    dt_now = datetime.now(JST)
    if(config.LEVEL<config.I):
        return
    with open(get_filepath(dt_now), 'a') as fout:
        print("I,"
                +dt_now.strftime(config.DT_FORMAT)+","
                +os.path.basename(inspect.stack()[1].filename)+","
                +inspect.stack()[1].function+"(),"
                +text, file=fout)
    return

#warning
def w(text):
    dt_now = datetime.now(JST)
    if(config.LEVEL<config.W):
        return
    with open(get_filepath(dt_now), 'a') as fout:
        print("W,"
                +dt_now.strftime(config.DT_FORMAT)+","
                +os.path.basename(inspect.stack()[1].filename)+","
                +inspect.stack()[1].function+"(),"
                +text, file=fout)
    return

#error
def e(text):
    dt_now = datetime.now(JST)
    if(config.LEVEL<config.E):
        return
    with open(get_filepath(dt_now), 'a') as fout:
        print("E,"
                +dt_now.strftime(config.DT_FORMAT)+","
                +os.path.basename(inspect.stack()[1].filename)+","
                +inspect.stack()[1].function+"(),"
                +text, file=fout)
    return

#print
def p(text):
    dt_now = datetime.now(JST)
    if(config.LEVEL<config.P):
        return
    with open(get_filepath(dt_now), 'a') as fout:
        print("P,"
                +dt_now.strftime(config.DT_FORMAT)+","
                +os.path.basename(inspect.stack()[1].filename)+","
                +inspect.stack()[1].function+"(),"
                +text, file=fout)
    return
