Newer
Older
Twilight / src / main / kotlin / net / taehui / twilight / QwilightLogging.kt
@taehui taehui on 20 Aug 1 KB v1.0-SNAPSHOT
package net.taehui.twilight

import jakarta.mail.*
import jakarta.mail.internet.InternetAddress
import jakarta.mail.internet.MimeMessage
import net.taehui.twilight.system.Configure
import org.slf4j.LoggerFactory
import java.util.*

class QwilightLogging(private val loggerID: String) : Logger {
    override fun logInfo(toNotify: String) {
        LoggerFactory.getLogger(javaClass).info("[{}] {}", loggerID, toNotify)
        logFuture {
            Transport.send(MimeMessage(Session.getDefaultInstance(Properties().apply {
                put("mail.smtp.host", "smtp.naver.com")
                put("mail.smtp.port", "587")
                put("mail.smtp.auth", "true")
                put("mail.smtp.starttls.enable", "true")
            }, object : Authenticator() {
                override fun getPasswordAuthentication(): PasswordAuthentication {
                    return PasswordAuthentication(Configure.nhn.smtpID, Configure.nhn.smtpPw)
                }
            })).apply {
                setFrom(InternetAddress("${Configure.nhn.smtpID}@naver.com"))
                addRecipient(
                    Message.RecipientType.TO,
                    InternetAddress("${Configure.nhn.smtpID}@naver.com")
                )
                subject = loggerID
                setText(toNotify)
            })
        }
    }

    override fun logFault(e: Throwable) {
        LoggerFactory.getLogger(javaClass).error("[{}] {}", loggerID, Utility.getFaultText(e))
    }
}