logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gary Gregory <garydgreg...@gmail.com>
Subject Re: SMTPAppender work in progress, questions
Date Fri, 21 Dec 2012 03:52:55 GMT
On Dec 20, 2012, at 19:45, Ralph Goers <ralph.goers@dslextreme.com> wrote:

> Also, I am planning on spending some time over the next week to address the outstanding
open Jira issues and then create a new release. If you can make something available by then
I'd love to include it.

+1

Gary

>
> Ralph
>
>
> On Dec 20, 2012, at 4:43 PM, Ralph Goers wrote:
>
>> The name in the annotation is what should appear as the XML element name. So instead
of <SMTPAppender name="smtp" you should have <SMTP name="smtp".
>>
>> Please remember to keep in mind if it makes sense you should try to use a Manager
as most of the other Appenders do so that 1) applications across multiple ClassLoaders will
share the Manager even if they have their own configuration and 2) applications won't have
problems when a reconfiguration occurs.
>>
>> Generally there are no concerns about adding test dependencies. If the license is
not compatible with the Apache license we might want to discuss that but generally that is
flexible for test dependencies.
>>
>> Ralph
>>
>>
>>
>> On Dec 20, 2012, at 12:49 PM, Scott Severtson wrote:
>>
>>> Hi,
>>>
>>> We've decided that we really need SMTPAppender to be implemented soon, and have
nearly finished a port/cleanup from the old Log4J 1.x implementation. The code is basically
complete, and we've got unit tests around a good percentage of the code.
>>>
>>> When fully tested and complete, we'd like to contribute the code back to the
project. As such, we're developing the code within a checked-out copy of Log4J2 trunk.
>>>
>>>
>>> We have two questions, though:
>>>
>>> 1. Even though the plugin class and factory method are annotated, XMLConfiguration
seems to be unable to find our plugin. Here's the relevant annotations:
>>> ---
>>> package org.apache.logging.log4j.core.appender;
>>>
>>> // ...
>>>
>>> @Plugin(name = "SMTP", type = "Core", elementType = "appender", printObject =
true)
>>> public class SMTPAppender extends AbstractAppender {
>>>
>>> // ...
>>>
>>>   @PluginFactory
>>>   public static SMTPAppender createAppender(@PluginAttr("name") final String
name,
>>> @PluginAttr("to") final String to,
>>>
>>> // ...
>>> ---
>>>
>>> Here's our stupid-simple log4j2.xml file:
>>> ---
>>> <configuration status="DEBUG">
>>>   <appenders>
>>>       <SMTPAppender
>>>               name="smtp"
>>>               to="me@example"
>>>               subject="Test error" />
>>>   </appenders>
>>>   <loggers>
>>>       <root level="debug">
>>>           <appender-ref ref="smtp"/>
>>>       </root>
>>>   </loggers>
>>> </configuration>
>>> ---
>>>
>>> And, the startup debug output from Log4J2 itself:
>>> ---
>>> 2012-12-20 15:39:28,035 DEBUG Generated plugins in 0.048658829 seconds
>>> 2012-12-20 15:39:28,039 ERROR appenders contains an invalid element or attribute
"SMTPAppender"
>>> 2012-12-20 15:39:28,041 DEBUG Calling createAppenders on class org.apache.logging.log4j.core.config.plugins.AppendersPlugin
for element appenders with params(appenders={})
>>> 2012-12-20 15:39:28,085 DEBUG Generated plugins in 0.043871845 seconds
>>> 2012-12-20 15:39:28,087 DEBUG Calling createAppenderRef on class org.apache.logging.log4j.core.config.AppenderRef
for element appender-ref with params(ref="smtp", level="null", null)
>>> 2012-12-20 15:39:28,089 DEBUG Calling createLogger on class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger
for element root with params(additivity="null", level="debug", appender-ref={org.apache.logging.log4j.core.config.AppenderRef@21aed5f9},
properties={}, Configuration(/home/ssevertson/workspace/log4j/core/test.xml), null)
>>> 2012-12-20 15:39:28,090 DEBUG Calling createLoggers on class org.apache.logging.log4j.core.config.plugins.LoggersPlugin
for element loggers with params(loggers={root})
>>> 2012-12-20 15:39:28,090 ERROR Unable to locate appender smtp for logger
>>> 2012-12-20 15:39:28,090 DEBUG Shutting down OutputStreamManager SYSTEM_OUT
>>> 2012-12-20 15:39:28,090 DEBUG Reconfiguration completed
>>> ---
>>>
>>> So, what are we missing? What else needs to happen to allow the plugin to be
recognized? FYI, we've also tried the "strict" syntax, both specifying the class name, and
the fully qualified package/class name as the "type" parameter.
>>>
>>> One final wrinkle - under a debugger, it appears that PluginManager is indeed
finding our class, although I'm not entirely sure I follow the plugin loading code.
>>>
>>>
>>>
>>> 2. We'd like to have more complete unit test coverage, including verifying that
messages are generated and sent correctly. As such, we'd need to introduce an additional test-time
dependency on a mock SMTP server, such as Dumbster. Any concerns with adding yet another test-time
dependency?
>>>
>>> Thanks,
>>> --Scott Severtson
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
> For additional commands, e-mail: log4j-dev-help@logging.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Mime
View raw message