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.

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-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to