使用 Spring 引导将日志发送到电子邮件
Sending logs to email using Spring boot
我正在尝试弄清楚如何配置我的 Spring 引导项目,以将日志消息发送到电子邮件,但尚未成功。没有发送电子邮件,没有可见错误。
我的logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="mail" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>email-smtp.eu-west-1.amazonaws.com</smtpHost>
<from>dev@example.com</from>
<to>dev@example.com</to>
<subject>Something went wrong</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="mail"/>
</root>
</configuration>
我的application.yaml:
spring:
mail:
host: email-smtp.eu-west-1.amazonaws.com
protocol: smtps
username: ***
password: ***
port: 465
properties:
mail:
smtp:
auth: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
fallback: false
ssl.enable: true
transport.protocol: smtps
我做错了什么?在 Spring 启动时是否有其他方式将日志消息发送到电子邮件?
请使用这个(PS:不要尝试将 属性 从属性文件加载到 logback,因为它在启动时不可见 & 如果仍然希望设置 属性 然后将它们提供为JVM 参数对 logback 可见):-
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<appender name="dbgMailer" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>email-smtp.eu-west-1.amazonaws.com</smtpHost>
<smtpPort>25</smtpPort>
<from>dev@example.com</from>
<to>dev@example.com</to>
<subjectStr>Something went wrong</subjectStr>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<root level="DEBUG">
<appender-ref ref="dbgMailer" />
</root>
</configuration>
您正在 application.yaml 中配置 Spring 邮件模块,而不是为 logback appender 提供必要的数据。您可能需要凭据在 SMTP 服务器中进行身份验证:
<appender name="mail" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>email-smtp.eu-west-1.amazonaws.com</smtpHost>
<username>user</username>
<password>user</password>
<from>dev@example.com</from>
<to>dev@example.com</to>
<subject>Something went wrong</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
另请参阅:
我正在尝试弄清楚如何配置我的 Spring 引导项目,以将日志消息发送到电子邮件,但尚未成功。没有发送电子邮件,没有可见错误。
我的logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<appender name="mail" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>email-smtp.eu-west-1.amazonaws.com</smtpHost>
<from>dev@example.com</from>
<to>dev@example.com</to>
<subject>Something went wrong</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<root level="INFO">
<appender-ref ref="mail"/>
</root>
</configuration>
我的application.yaml:
spring:
mail:
host: email-smtp.eu-west-1.amazonaws.com
protocol: smtps
username: ***
password: ***
port: 465
properties:
mail:
smtp:
auth: true
socketFactory:
port: 465
class: javax.net.ssl.SSLSocketFactory
fallback: false
ssl.enable: true
transport.protocol: smtps
我做错了什么?在 Spring 启动时是否有其他方式将日志消息发送到电子邮件?
请使用这个(PS:不要尝试将 属性 从属性文件加载到 logback,因为它在启动时不可见 & 如果仍然希望设置 属性 然后将它们提供为JVM 参数对 logback 可见):-
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<include resource="org/springframework/boot/logging/logback/file-appender.xml" />
<appender name="dbgMailer" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>email-smtp.eu-west-1.amazonaws.com</smtpHost>
<smtpPort>25</smtpPort>
<from>dev@example.com</from>
<to>dev@example.com</to>
<subjectStr>Something went wrong</subjectStr>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
<root level="DEBUG">
<appender-ref ref="dbgMailer" />
</root>
</configuration>
您正在 application.yaml 中配置 Spring 邮件模块,而不是为 logback appender 提供必要的数据。您可能需要凭据在 SMTP 服务器中进行身份验证:
<appender name="mail" class="ch.qos.logback.classic.net.SMTPAppender">
<smtpHost>email-smtp.eu-west-1.amazonaws.com</smtpHost>
<username>user</username>
<password>user</password>
<from>dev@example.com</from>
<to>dev@example.com</to>
<subject>Something went wrong</subject>
<layout class="ch.qos.logback.classic.html.HTMLLayout"/>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
</appender>
另请参阅: