package org.codehaus.mojo.syslog; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import org.codehaus.plexus.util.StringUtils; import org.productivity.java.syslog4j.impl.message.processor.structured.StructuredSyslogMessageProcessor; import org.productivity.java.syslog4j.impl.message.structured.StructuredSyslogMessage; import org.productivity.java.syslog4j.util.SyslogUtility; public class RedirectSyslogMessageStructureProcessor extends StructuredSyslogMessageProcessor { private static final long serialVersionUID = 1L; private String fromHost; public void setFromHost( String fromHost ) { this.fromHost = fromHost; } public String createSyslogHeader( final int facility, final int level, final boolean sendLocalTimestamp, final boolean sendLocalName ) { final StringBuffer buffer = new StringBuffer(); final int priority = ( facility | level ); buffer.append( "<" ); buffer.append( priority ); buffer.append( ">" ); buffer.append( VERSION ); buffer.append( ' ' ); final SimpleDateFormat dateFormat = new SimpleDateFormat( STRUCTURED_DATA_MESSAGE_DATEFORMAT, Locale.ENGLISH ); // ISO standard requires a colon in the timezone final String datePrefix = dateFormat.format( new Date() ); buffer.append( datePrefix.substring( 0, 22 ) ); buffer.append( ':' ); buffer.append( datePrefix.substring( 22 ) ); buffer.append( ' ' ); final String localName = StringUtils.isBlank( fromHost )?SyslogUtility.getLocalName():fromHost; buffer.append( localName ); buffer.append( ' ' ); buffer.append( StructuredSyslogMessage.nilProtect( this.getApplicationName() ) ).append( ' ' ); buffer.append( StructuredSyslogMessage.nilProtect( this.getProcessId() ) ).append( ' ' ); return buffer.toString(); } }