ceki <ceki@...> writes: > > On 28.07.2012 00:37, Noremac wrote: > > Thank you for the reply. The problem I've been having is that I'm not > > finding accessible some of the specific pieces of the configuration. How > > can I test that the markerEvaluator is set up correctly? There's no method > > to get the evaluator, only to set the evaluator. > > Could you post your code and config file so we can have a look at it? > You can change logger names etc to protect the innocent.
So the config file is basic, as I will be programmatically adding appenders: <?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- Conversion rules; a custom pattern token to use in the pattern layout class --> <conversionRule conversionWord="threadHash" converterClass="stuff.util.logging.ThreadHashConverter" /> <!-- Write logs out to the console --> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>[\(%-6threadHash\) app=iv %d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %-25logger{25} - %msg%n</pattern> </encoder> </appender> <!-- Specify what loggers are to be used --> <root level="INFO"> <appender-ref ref="stdout"/> </root> </configuration> The appender is added like so: public void createAdminNotifyAppender(LoggerContext lc, AppConfigPropertiesReader propReader) { logger.info("Setting up logback admin_notify logging"); //Set up the admin notify appender programatically (needs to use the properties from the propReader above) OnMarkerEvaluator markerEvaluator = new OnMarkerEvaluator(); markerEvaluator.setContext(lc); markerEvaluator.addMarker("ADMIN_NOTIFY"); markerEvaluator.setName("ADMIN_NOTIFY"); markerEvaluator.start(); PatternLayout patternLayout = new PatternLayout(); patternLayout.setContext(lc); patternLayout.setPattern("[\\(%-6threadHash\\) app=iv %d{yyyy-MM-dd HH:mm:ss.SSS}] %-5level %-25logger{25} - %msg%n"); patternLayout.start(); String adminEmails = propReader.getProperty("adminEmail"); SMTPAppender adminNotifyAppender = new SMTPAppender(); adminNotifyAppender.setContext(lc); adminNotifyAppender.setEvaluator(markerEvaluator); adminNotifyAppender.setSMTPHost(propReader.getProperty("mail.smtp.host")); if (adminEmails == null) { logger.error("No Admin Emails are set! No one will be notified for system alerts"); } else { for (String adminEmail : adminEmails.split(",")) { adminNotifyAppender.addTo(adminEmail); }; } adminNotifyAppender.setFrom(propReader.getProperty("sysEmailAddressNoReply")); adminNotifyAppender.setSubject("System Alert! [" + propReader.getProperty("environment") + "]"); adminNotifyAppender.setLayout(patternLayout); adminNotifyAppender.setName("ADMIN_NOTIFY"); adminNotifyAppender.start(); Logger rootLogger = lc.getLogger(Logger.ROOT_LOGGER_NAME); rootLogger.addAppender(adminNotifyAppender); } and my test case is as follows: private void testSimpleSMTPAppenderSetup(LoggingMarker marker, String email, Logger rootLogger, AppConfigPropertiesReader propReader) { SMTPAppender smtpAppender = (SMTPAppender)rootLogger.getAppender(LoggingMarker.ADMIN_NOTIFY.getName()); //check that the necessary fields were set assertEquals("smtpHost set correctly", smtpAppender.getSMTPHost(), propReader.getProperty("mail.smtp.host")); assertEquals("from address set correctly", smtpAppender.getFrom(), propReader.getProperty("sysEmailAddressNoReply")); assertTrue("environment set correctly", smtpAppender.getSubject().contains(propReader.getProperty("environment"))); List<String> appenderEmailsWithSuffix = smtpAppender.getToAsListOfString(); List<String> appenderEmails = new ArrayList<String>(); String[] propEmails = propReader.getProperty("adminEmail").split(","); for (String emailAddress : appenderEmailsWithSuffix) { appenderEmails.add(emailAddress.replaceFirst("%nopex$", "")); } assertTrue("to-emails are set correctly", appenderEmails.containsAll(Arrays.asList(propEmails))); //TODO find a way to test that the logs are getting filtered by the markerEvaluator (or that it is there set on the logger) } _______________________________________________ Logback-user mailing list Logback-user@qos.ch http://mailman.qos.ch/mailman/listinfo/logback-user