I want to send mail whenever the following statement
Logger.Error("some error")
is encountered.
One way that I can do this is to use the email sending code at every place wherever I have used logger.error
. However I think that there is something like the SMTPAppender
of logback
which sends email by itself whenever logger.error
is called but I cannot find the appropriate documentation or tutorials for this. Any help? What config to write...what plugins if any to be included and how?
Edit1: Here is my logback.xml
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>${application.home}/logs/application.log</file>
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%coloredLevel %logger{15} - %message%n%xException{5}</pattern>
</encoder>
</appender>
<appender name="EMAIL" class="ch.qos.logback.classic.net.SMTPAppender">
<asynchronousSending>false</asynchronousSending>
<smtpHost>smtp.gmail.com</smtpHost>
<smtpPort>465</smtpPort>
<SSL>true</SSL>
<username>myusername</username>
<password>mypwd</password>
<to>toEmail</to>
<from>fromEmail</from>
<subject>Linka ERROR: %logger</subject>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</layout>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="INFO"/>
<logger name="crawler" level="DEBUG">
<!--<appender-ref ref="STDOUT" />-->
</logger>
<root level="ERROR">
<appender-ref ref="STDOUT" />
<appender-ref ref="EMAIL" />
</root>
</configuration>
The build.sbt is as:
name := """my-dnd"""
version := "1.0-SNAPSHOT"
lazy val root = (project in file(".")).enablePlugins(PlayJava)
scalaVersion := "2.11.6"
libraryDependencies ++= Seq(
javaJdbc,
cache,
javaWs,
"javax.mail" % "mail" % "1.4.5",
"javax.activation" % "activation" % "1.1.1"
)
// Play provides two styles of routers, one expects its actions to be injected, the
// other, legacy style, accesses its actions statically.
routesGenerator := InjectedRoutesGenerator
I am not getting any errors also in the console but no mail is being sent. What am i missing? Please guide.