logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject Re: SMTPAppender work in progress, questions
Date Fri, 21 Dec 2012 00:43:30 GMT
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


Mime
View raw message