Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * JBoss, Home of Professional Open Source
   * Copyright 2014, JBoss Inc., and individual contributors as indicated
   * by the @authors tag.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.jboss.as.test.syslogserver;
 
 import java.util.Date;
 
Simple implementation of rfc5424 syslog message format (c.f. http://tools.ietf.org/html/rfc5424#section-6).

Author(s):
Josef Cacek
 
 public class Rfc5424SyslogEvent implements SyslogServerEventIF {
 
     private static final char SP = ' ';
     private static final String CHARSET = "UTF-8";
     private static final String NIL = "-";
     private static final byte[] UTF_8_BOM = { (byte) 0xef, (byte) 0xbb, (byte) 0xbf };
 
     private static Logger LOGGER = Logger.getLogger(Rfc5424SyslogEvent.class);
 
     private final byte[] raw;
 
     private final String prioVersion;
     private final int facility;
     private final int level;
     private final int version;
 
     private final String timestamp;
     private final String host;
     private final String appName;
     private final String procId;
     private final String msgId;
     private final String structuredData;
     private final String message;
 
     public Rfc5424SyslogEvent(byte[] dataint offsetint length) {
          = new byte[length - offset];
         System.arraycopy(dataoffset, 0, length);
         int startPos = 0;
         int endPos = -1;
 
         endPos = searchChar(startPos);
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         endPos = searchChar(startPos' ');
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         endPos = searchChar(startPos' ');
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         endPos = searchChar(startPos' ');
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         endPos = searchChar(startPos' ');
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         endPos = searchChar(startPos' ');
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         if ([startPos] == '[') {
             endPos = searchChar(startPos']') + 1;
         } else {
             endPos = searchChar(startPos' ');
             if (endPos == -1)
                 endPos = .;
         }
          = getString(startPosendPos);
 
         startPos = endPos + 1;
         if (startPos < .) {
             if (startPos + 3 < . && [startPos] == [0] && [startPos + 1] == [1]
                     && [startPos + 2] == [2]) {
                startPos += 3;
            }
             = getString(startPos.);
        } else {
             = null;
        }
        // parse priority and version
        endPos = .indexOf(">");
        final String priorityStr = .substring(1, endPos);
        int priority = 0;
        try {
            priority = Integer.parseInt(priorityStr);
        } catch (NumberFormatException nfe) {
            .error("Can't parse priority");
        }
         = priority & 7;
         = (priority - ) >> 3;
        startPos = endPos + 1;
        int ver = 0;
        if (startPos < .length()) {
            try {
                ver = Integer.parseInt(.substring(startPos));
            } catch (NumberFormatException nfe) {
                .error("Can't parse version");
                ver = -1;
            }
        }
         = ver;
    }
    private String getString(byte[] dataint startPosint endPos) {
        try {
            return new String(datastartPosendPos - startPos);
        } catch (UnsupportedEncodingException e) {
            .error("Unsupported encoding"e);
        }
        return "";
    }

    
Try to find a character in given byte array, starting from startPos.

Parameters:
data
startPos
c
Returns:
position of the character or -1 if not found
    private int searchChar(byte[] dataint startPoschar c) {
        for (int i = startPosi < data.lengthi++) {
            if (data[i] == c) {
                return i;
            }
        }
        return -1;
    }
    public String getPrioVersion() {
        return ;
    }
    public int getFacility() {
        return ;
    }
    public int getLevel() {
        return ;
    }
    public int getVersion() {
        return ;
    }
    public String getTimestamp() {
        return ;
    }
    public String getHost() {
        return ;
    }
    public String getAppName() {
        return ;
    }
    public String getProcId() {
        return ;
    }
    public String getMsgId() {
        return ;
    }
    public String getStructuredData() {
        return ;
    }
    public String getMessage() {
        return ;
    }
    public String getCharSet() {
        return ;
    }
    public byte[] getRaw() {
        return ;
    }
    public Date getDate() {
        if (.equals()) {
            return null;
        }
        String fixTz = .replace("Z""+00:00");
        final int tzSeparatorPos = fixTz.lastIndexOf(":");
        fixTz = fixTz.substring(0, tzSeparatorPos) + fixTz.substring(tzSeparatorPos + 1);
        try {
            return new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ").parse(fixTz);
        } catch (ParseException e) {
            .error("Unable to parse date " + e);
        }
        return null;
    }
    public void setCharSet(String charSet) {
    }
    public void setFacility(int facility) {
    }
    public void setDate(Date date) {
    }
    public void setLevel(int level) {
    }
    public void setHost(String host) {
    }
    public void setMessage(String message) {
    }
    @Override
    public String toString() {
        return "Rfc5424SyslogEvent [prioVersion=" +  + ", facility=" +  + ", level=" +  + ", version="
                +  + ", timestamp=" +  + ", host=" +  + ", appName=" +  + ", procId=" + 
                + ", msgId=" +  + ", structuredData=" +  + ", message=" +  + "]";
    }
New to GrepCode? Check out our FAQ X