log4j2でメールを送信するSpringBoot

gmv92

log4j2を使用してSpringBootアプリケーションでエラーレベルのログを電子メールで送信したいだけです。

これについての無限のチュートリアルを読んだ後、私はこれに到達することができません。

ローカルホストにDockerSMTPサーバーがあり、構成ファイルは次のとおりです。

pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.2.RELEASE</version>
    </parent>
    <dependencies>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- Add Log4j2 Dependency -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j2</artifactId>
        </dependency>

        <!-- Needed for SMTP appender -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        ...
        ...

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout
                pattern="%style{%d{ISO8601}}{black} %highlight{%-5level }[%style{%t}{bright,blue}] %style{%C}{bright,yellow}: %msg%n%throwable" />
        </Console>
        <SMTP name="MailAppender"
            subject="error log"
            to="[email protected]"
            from="[email protected]"
            smtpHost="localhost"
            smtpPort="25"
            bufferSize="10"
            ignoreExceptions="false"
            smtpDebug="true"
            >
            <ThresholdFilter level="ERROR" onMatch="ACCEPT"/>
            <PatternLayout>
                <pattern>%d %p [%C] [%t] %m%n</pattern>
            </PatternLayout>
        </SMTP>
    </Appenders>

    <Loggers>
        <Root level="all">
            <AppenderRef ref="MailAppender" level="debug" />
        </Root>
    </Loggers>
</Configuration>

application.yml

spring:
  mail:
    host: localhost
    port: 25
    auth: false
    properties:
      mail:
        transport:
          protocol: smtp
        smtp:
          auth: false
          host: localhost
          port: 25

この構成では、log4j2はメールを送信できません。どうやら、log4j2は起動時に正しく設定を行います:

2020-09-24 18:31:32,780 restartedMain DEBUG createAppender(Configuration(/XXX/target/classes/log4j2.xml), name="MailAppender", to="[email protected]", cc="null", bcc="null", from="[email protected]", replyTo="null", subject="error log", smtpProtocol="null", smtpHost="localhost", smtpPort="25", smtpUsername="null", smtpPassword="c0323768f8f5dc63ac2d877d8e65de66", smtpDebug="true", bufferSize="10", PatternLayout(%d %p [%C] [%t] %m%n), ThresholdFilter(ERROR), ignoreExceptions="false")

ただし、メールを送信することはできません。

おかしなことに、Spring Mailを使用して(JavaMailSender APIを使用して)同じ構成でメールを送信できるので、log4j2の構成に問題があると思います。たぶんlog4j2は何らかの理由でメール設定を上書きしますか?

誰か助けてもらえますか?

gmv92

わかりました、私はついにそれを解決しました。毎回動作していますが、アプリケーションロガーを認識しないため、次のようなSpringFrameworkログ名でのみ動作します。org.springframework.boot

SMTPAppenderを参照する新しいロガーを追加することを解決しました。

        <Logger name="com.myapp" level="all" additivity="false">
            <AppenderRef ref="AsyncMailer" level="debug" />
        </Logger>

そして、log.error( "XXX")で、ログ情報を含むメールを送信します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

FlumeでLog4j2を使用してテキストメッセージを送信する

分類Dev

静的メソッドでLog4j2を使用する

分類Dev

Log4j2で特定のロガーレベルを設定する方法

分類Dev

EclipseコンソールでLog4J2出力を表示する

分類Dev

log4j2でslf4jを使用する

分類Dev

log4j2を使用してElasticsearchにバルクデータを送信するにはどうすればよいですか?

分類Dev

Log4j2:SMTPAppenderはエラーまたは致命的なレベルのメールを送信しません

分類Dev

log4j2ログメッセージをマスクする方法

分類Dev

log4j2のWebアプリでプロパティパラメータを検索する方法は?

分類Dev

SpringBootのLog4j2

分類Dev

tomcatでlog4j2フォルダを設定するには?

分類Dev

コンソールでカスタムロガー印刷を無効にする(Log4j2)

分類Dev

SpringBootでの構成に関するLog4j2の問題

分類Dev

log4j2のJSONログにフィールドを追加する方法

分類Dev

log4j2のグローバルPatternLayoutを定義する方法は?

分類Dev

SpringBootアプリでlog4j2を使用してログを記録する

分類Dev

Springbootで外部プロパティファイルを使用してlog4j2を使用するにはどうすればよいですか?

分類Dev

log4j2でnullアペンダーを構成する方法

分類Dev

log4j2でカスタムアペンダーを作成する方法

分類Dev

JAX-WS JavaWebサービスでLog4j2を使用する方法

分類Dev

intelliJのコンソールでLog4j2出力を色付けする方法は?

分類Dev

log4j2を使用してログをKafkaに送信する

分類Dev

log4j2で古いログを削除する方法

分類Dev

Tomcat8.5.15でlog4j2を構成する方法

分類Dev

log4j2でStatisticsCsvLayoutを構成する方法

分類Dev

log4j2で動的な日付を提供する

分類Dev

Muleでlog4j2構成を動的に選択する

分類Dev

NetBeansでlog4j2を設定する方法は?

分類Dev

log4j2でFixedWindowRollingPolicyを構成する

Related 関連記事

  1. 1

    FlumeでLog4j2を使用してテキストメッセージを送信する

  2. 2

    静的メソッドでLog4j2を使用する

  3. 3

    Log4j2で特定のロガーレベルを設定する方法

  4. 4

    EclipseコンソールでLog4J2出力を表示する

  5. 5

    log4j2でslf4jを使用する

  6. 6

    log4j2を使用してElasticsearchにバルクデータを送信するにはどうすればよいですか?

  7. 7

    Log4j2:SMTPAppenderはエラーまたは致命的なレベルのメールを送信しません

  8. 8

    log4j2ログメッセージをマスクする方法

  9. 9

    log4j2のWebアプリでプロパティパラメータを検索する方法は?

  10. 10

    SpringBootのLog4j2

  11. 11

    tomcatでlog4j2フォルダを設定するには?

  12. 12

    コンソールでカスタムロガー印刷を無効にする(Log4j2)

  13. 13

    SpringBootでの構成に関するLog4j2の問題

  14. 14

    log4j2のJSONログにフィールドを追加する方法

  15. 15

    log4j2のグローバルPatternLayoutを定義する方法は?

  16. 16

    SpringBootアプリでlog4j2を使用してログを記録する

  17. 17

    Springbootで外部プロパティファイルを使用してlog4j2を使用するにはどうすればよいですか?

  18. 18

    log4j2でnullアペンダーを構成する方法

  19. 19

    log4j2でカスタムアペンダーを作成する方法

  20. 20

    JAX-WS JavaWebサービスでLog4j2を使用する方法

  21. 21

    intelliJのコンソールでLog4j2出力を色付けする方法は?

  22. 22

    log4j2を使用してログをKafkaに送信する

  23. 23

    log4j2で古いログを削除する方法

  24. 24

    Tomcat8.5.15でlog4j2を構成する方法

  25. 25

    log4j2でStatisticsCsvLayoutを構成する方法

  26. 26

    log4j2で動的な日付を提供する

  27. 27

    Muleでlog4j2構成を動的に選択する

  28. 28

    NetBeansでlog4j2を設定する方法は?

  29. 29

    log4j2でFixedWindowRollingPolicyを構成する

ホットタグ

アーカイブ