gpt4 book ai didi

java - log4j 控制台和 SMTPAppender : How use multiple appenders

转载 作者:行者123 更新时间:2023-12-02 07:49:04 25 4
gpt4 key购买 nike

我正在开发一个移动应用程序,我使用 log4j 来显示信息。我想使用 log4j 在控制台上显示它正确执行的信息,但是当我尝试添加 SMTPAppender 以在发生错误时发送电子邮件时遇到麻烦。它没有显示错误,但当我在添加了 SMTPAppender 的情况下启动 tomcat 时,它无法正确启动。

我正在使用 Apache Tomcat 7.0.23

这是我的 log4j.properties 文件

log4j.rootCategory=TRACE, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} [application] %-5p %m%n


log4j.rootCategory=ERROR, mail

log4j.appender.mail=org.apache.log4j.net.SMTPAppender
#defines how often emails are send
log4j.appender.mail.BufferSize=1
log4j.appender.mail.SMTPHost=smtp.gmail.com
log4j.appender.mail.SMTPUsername=******* #not the username im using
log4j.appender.mail.SMTPPassword=******* #not the password im using
log4j.appender.mail.From=info@gmail.com
log4j.appender.mail.To=noc@gmail.com
log4j.appender.mail.Subject="Application.log error occurred"
log4j.appender.mail.layout=org.apache.log4j.PatternLayout
log4j.appender.mail.layout.ConversionPattern=%d{ISO8601} [application] %-5p %m%n

这是我的控制台

Found binding in [jar:file:/C:/Documents%20and%20Settings/noconnor/.m2/repository/org/slf4j/slf4j-simple/1.6.1/slf4j-simple-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Documents%20and%20Settings/noconnor/.m2/repository/org/slf4j/slf4j-log4j12/1.6.2/slf4j-log4j12-1.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.

这是添加第二个附加程序的正确方法还是我在某个地方犯了错误?

最佳答案

您只能拥有一个 log4j.rootCategory 属性。

您可以有多个附加程序:

log4j.rootCategory=TRACE, stdout, mail

但是您可能不希望所有消息都发送到邮件。为此,您需要添加 priority filter到您的邮件附加程序,但我认为这只能使用 XML syntax 来完成而不是 log4j.properties。

下面是使用两个附加程序的示例,但“邮件”附加程序仅针对错误和致命消息激活。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} [application] %-5p %m%n"/>
</layout>
</appender>

<appender name="mail" class="org.apache.log4j.net.SMTPAppender">
<!-- mail configuration here... -->

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} [application] %-5p %m%n"/>
</layout>

<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="levelMin" value="ERROR" />
<param name="levelMax" value="FATAL" />
</filter>
</appender>

<root>
<priority value="trace" />
<appender-ref ref="stdout" />
<appender-ref ref="mail" />
</root>

</log4j:configuration>

您需要添加更多邮件配置选项以匹配您的原始属性文件。该文件必须名为“log4j.xml”,并且必须用来代替“log4j.properties”(删除此文件)。

关于java - log4j 控制台和 SMTPAppender : How use multiple appenders,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com