@Override public void append(final LoggingEvent event) { // Lazy attachment, to avoid calling non-final method in constructor if (!isAttached(socketAppender)) { addAppender(socketAppender); } // Lazy activation / connection too, to allow setting host and port if (activated.compareAndSet(false, true)) { socketAppender.activateOptions(); } super.append(event); }
logger.setAdditivity(false); logger.addAppender(appender); appender.activateOptions(); out = logger;
@Override public void init(SubsetConfiguration conf) { String host = conf.getString(HOST_PROPERTY); if (host != null) { this.host = host; } String port = conf.getString(PORT_PROPERTY); if (port != null) { this.port = Integer.parseInt(port); } String context = conf.getString(CONTEXT); if (context != null) { this.context = context; } PatternLayout layout = new PatternLayout("%d{ISO8601} %p %c: %m%n"); org.apache.log4j.net.SocketAppender appender = new org.apache.log4j.net.SocketAppender(this.host, this.port); appender.setName("chukwa.metrics." + this.context); appender.setLayout(layout); Logger logger = Logger.getLogger("chukwa.metrics." + this.context); logger.setAdditivity(false); logger.addAppender(appender); appender.activateOptions(); out = logger; }