Simpan info logging sebagai variabel untuk digunakan dalam peringatan pesan email

Saya baru beberapa minggu belajar python tanpa latar belakang pemrograman sebelumnya, jadi saya minta maaf atas ketidaktahuan saya..

Saya mencoba menggunakan kombinasi modul untuk memantau folder untuk file baru (pengawas), memperingatkan peristiwa apa pun (modul logging), dan kemudian mengirimkan peringatan ke email saya (smtplib).

Saya telah menemukan contoh yang sangat bagus di sini: Bagaimana cara menjalankan fungsi ketika ada perubahan pada direktori dengan Python Watchdog?

Namun, saya terjebak saat mencoba menyimpan informasi logging sebagai variabel untuk digunakan dalam pesan email saya. Saya bertanya-tanya apakah saya perlu menampilkan informasi logging ke file dan kemudian membaca baris untuk digunakan sebagai variabel.

Bagaimanapun, inilah yang aku punya. Bantuan apa pun dihargai. Sementara itu saya akan melanjutkan ke Google.

import sys
import time
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
import smtplib

class Event(LoggingEventHandler):
    def on_any_event(self, event):
        logMsg = logging.basicConfig(level=logging.INFO,
                        format='%(asctime)s - %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S')

        sender = '[email protected]'
        receiver = '[email protected]'
        message = """From: No Reply <[email protected]>
        TO: Test User <[email protected]>
        Subject: Folder Modify Detected

        The following change was detected: """ + str(logMsg)

        mail = smtplib.SMTP('mailServer.myDomain.com', 25)
        mail.ehlo()
        mail.starttls()
        mail.sendmail(sender, receiver, message)
        mail.close()

if __name__ == "__main__":

    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    event_handler = Event()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()

person Nick Biolo    schedule 19.01.2017    source sumber
comment
Maksud saya, jika Anda dapat mencatatnya, Anda tahu apa yang Anda catat dengan benar. Cukup keluarkan variabel itu dan kirimkan melalui email?   -  person Bobby    schedule 19.01.2017


Jawaban (2)


Yang Anda perlukan adalah SMTPHandler, sehingga setiap kali folder berubah (log baru dibuat), sebuah email terkirim.

import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler

class Event(LoggingEventHandler):
    def on_any_event(self, event):
        # do stuff
        pass

if __name__ == "__main__":
    root = logging.getLogger()
    root.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(message)s',
                                  '%Y-%m-%d %H:%M:%S')
    root.setFormatter(formatter)

    mail_handler = logging.handlers.SMTPHandler(mailhost='mailserver',
                                                fromaddr='[email protected]',
                                                toaddrs=['[email protected]'],
                                                subject='The log',
                                                credentials=('user','pwd'),
                                                secure=None)
    mail_handler.setLevel(logging.INFO)
    mail_handler.setFormatter(formatter)
    root.addHandler(mail_handler) # Add this handler to root logger

    path = sys.argv[1] if len(sys.argv) > 1 else '.'
    event_handler = Event()
    observer = Observer()
    observer.schedule(event_handler, path, recursive=False)
    observer.start()
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    observer.join()
person Shane    schedule 20.01.2017
comment
Terima kasih atas balasannya. Saya dapat menjalankannya dengan contoh yang saya temukan di sini: michaelcho.me/article/. - person Nick Biolo; 25.01.2017

Dapat memperoleh contoh kerja di sini dan menyesuaikan dengan kebutuhan saya: https://www.michaelcho.me/article/using-pythons-watchdog-to-monitor-changes-to-a-directory

person Nick Biolo    schedule 25.01.2017