SMS Bug Report Appender

The SMS Bug Report Appender files bug reports as SMS messages. This can be used to notify pagers and cellphones when errors occur.

Configuring SMS Bug Report Appender

SMS Bug Report Appender takes a number of options from the log4j configuration:

OptionRequiredDescription
fromtrueEmail address of sender
hashingMethodfalseIn order to minimize reporting duplicate bugs, bug reports are tracked with semiunique hashes. This setting controls the method by which these hash values are generated. Available hasing methods:
  • Content: This method generates hash codes based on the string content of logging messages. With this method bug reports are considered different if the content of the message is different.
  • Throwable: This method generates hash codes based on stack traces of logged throwables. In this scheme, different stack traces constitute different bug reports. If no throwable is recorded in a logging event, the string content of that event is used for hasing purposes.
  • Location: This method generates hash codes based on the location in the code from which the logging event was recorded. If a throwable is logged, the code locations specified in the stack trace are included as well. This is the default method.
maxSizefalseSet the maximum number of logging events the thread bound buffer can hold. Defaults to 200.
reportDuplicatesfalseBy default, appenders don't report duplicate bug reports. Set this to true to change this behavior.
smtpServertrueMail server used for delivering messages.
subjecttrueSubject of all SMS messages.
thresholdPriorityfalseBug reports are not filed unless one or more logging events is of the specified (or greater) priority. The default priority is ERROR
thresholdSizefalseFor long running threads, it may not be practical to wait until a thread ends to file a report. For long running threads, the Logging Event buffer will be checked (based on the sleepMilliseconds parameter). If the events in the buffer are of suffient number (specified by this parameter) and have met the threadholdPriority, they will be filed as a bug. The default value for this option is 100.
totrueComma delimited list of SMS recipients

Sample Configuration

log4j.rootLogger=DEBUG, A1, A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.threshold=ERROR

log4j.appender.A2=net.codesmarts.log4j.SMSBugReportAppender
log4j.appender.A2.thresholdPriority=ERROR
log4j.appender.A2.to=recipient1@smsprovider.dom,recipient2@smsprovider.dom
log4j.appender.A2.from=bugs@domain.dom
log4j.appender.A2.smtpServer=mail.domain.dom
log4j.appender.A2.subject=Error occured in production!

# Print the date in ISO 8601 format
log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n