Python + logging 日志和日志文件(一天一個日志文件)

項目中用日志棠耕,但是老的代碼沒有日志文件睛竣,查找錯誤很麻煩晰房,我經(jīng)過兩個小時的摸索,寫了個日志工具類射沟∈庹撸可以方便的集成日志。
日志工具類自動生成Logs文件夾如下


image.png
log_helper.py
import logging
import os.path
import time

logging.basicConfig(format='%(asctime)s - %(levelname)s--->: %(message)s',
                    level=logging.DEBUG,
                    filemode='a')


def createLogFile(name, level):
    # 創(chuàng)建一個logger
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)  # Log等級總開關(guān)

    # 創(chuàng)建一個handler验夯,用于寫入日志文件
    rq = time.strftime('%Y-%m-%d', time.localtime(time.time()))
    # log_date = rq[:10]
    log_path = os.getcwd() + '/Logs/'
    isExists = os.path.exists(log_path)
    # # 判斷結(jié)果
    if not isExists:
        os.makedirs(log_path)
    log_name = os.getcwd() + '/Logs/{}-'.format(rq) + name + '.log'
    fh = logging.FileHandler(log_name, mode='a')
    fh.setLevel(level)  # 輸出到file的log等級的開關(guān)

    # 定義handler的輸出格式
    formatter = logging.Formatter("%(asctime)s - %(levelname)s--->: %(message)s")
    fh.setFormatter(formatter)
    logger.addHandler(fh)


def print_info(info, *args):
    createLogFile("info", logging.INFO)
    if len(args) > 0:
        log = ""
        for arg in args:
            log += "{}"
        logging.info((info + log).format(*args))
    else:
        logging.info(info)


def print_error(error, *args):
    createLogFile("error",logging.ERROR)
    if len(args) > 0:
        log = ""
        for arg in args:
            log += "{}"
        logging.error((error + log).format(*args))
    else:
        logging.error(error)

def deleteBigFile(path):
    for file in os.listdir(path):
        fsize = os.path.getsize(f'{path}{file}')
        if (fsize > 1 * 1024 * 1024 * 1024):
            os.remove(f'{path}{file}')

if __name__ == '__main__':
    createLogFile("info", logging.INFO)

簡單使用:

app.py
import json
import time
import log_helper

from flask import Flask, request
from waitress import serve

from host_helper import HostManager
from request_helper import api

app = Flask(__name__)


def access_log(fn):
    def wrapper():
        t_begin = time.time()
        res = fn()
        t_end = time.time()
        data = request.data.decode()
        print('url_params:{} \ncost:{} s \nres:{}\n'.format(data, t_end - t_begin, res[0:50]))
        return res

    return wrapper


@app.route('/dispatch', methods=['POST'])
@access_log
def dispatch():
    data = request.data.decode()
    body = json.loads(data)
    headers = body.get('headers')
    params = body.get('params')
    url = body.get('url')
    method = body.get('method')
    proxy = body.get('proxy')
    timeout = body.get('timeout')
    res = api.exec(url=url, method=method, headers=headers, data=params, proxy=proxy, timeout=timeout)
    log_helper.print_info('url_params:{} \n res:{}\n'.format(data,  res[0:100]))
    return res

另外可以用啟動腳本猖吴,nohup 記錄日志(nohup: 把輸出追加到"nohup.out"),這個沒有細細研究挥转。有興趣的同學(xué)可以研究一下海蔽。

reboot.sh
PID=`ps -ef |grep app.py | grep -v grep | awk '{print $2}'`
echo ${PID}
kill -9 ${PID}
echo "shutdown this process"
nohup python3 app.py &
echo "reboot success"
自動刪除5天前的日志文件 auto-del-5-days-ago-log.sh
#!/bin/sh

#1、添加文件可運行權(quán)限
#chmod +x /data/shell/bin/auto-del-5-days-ago-log.sh
#2扁位、打開系統(tǒng) 定時任務(wù)的配置
# crontab -e
#3准潭、添加配置 每天0:00執(zhí)行任務(wù)
# 0 0 * * * /root/nezha-proxy/auto-del-5-days-ago-log.sh

DIR=$(cd `dirname $0` ; pwd)
echo "刪除5天前的log日志" $DIR/Logs/
find $DIR/Logs/ -mtime +5 -name "*.log" -exec rm -rf {} \;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市域仇,隨后出現(xiàn)的幾起案子刑然,更是在濱河造成了極大的恐慌,老刑警劉巖暇务,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泼掠,死亡現(xiàn)場離奇詭異,居然都是意外死亡垦细,警方通過查閱死者的電腦和手機择镇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來括改,“玉大人腻豌,你說我怎么就攤上這事。” “怎么了吝梅?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵虱疏,是天一觀的道長。 經(jīng)常有香客問我苏携,道長做瞪,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任右冻,我火速辦了婚禮装蓬,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘纱扭。我一直安慰自己牍帚,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布乳蛾。 她就那樣靜靜地躺著履羞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪屡久。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天爱榔,我揣著相機與錄音被环,去河邊找鬼。 笑死详幽,一個胖子當著我的面吹牛筛欢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播唇聘,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼版姑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迟郎?” 一聲冷哼從身側(cè)響起剥险,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宪肖,沒想到半個月后表制,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡控乾,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年么介,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜕衡。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡壤短,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情久脯,我是刑警寧澤纳胧,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站桶现,受9級特大地震影響躲雅,放射性物質(zhì)發(fā)生泄漏骡和。R本人自食惡果不足惜相赁,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慰于。 院中可真熱鬧钮科,春花似錦、人聲如沸婆赠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽休里。三九已至蛆挫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工褐鸥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纸泡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子浇借,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容