// // Copyright 2010 Cinch Logic Pty Ltd. // // http://www.chililog.com // // 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.chililog.server.engine.parsers; import java.util.ArrayList; import org.chililog.server.common.ChiliLogException; import org.chililog.server.common.Log4JLogger; import org.chililog.server.data.RepositoryEntryBO; import org.chililog.server.data.RepositoryConfigBO; import org.chililog.server.data.RepositoryParserConfigBO; import org.chililog.server.data.RepositoryEntryBO.Severity; import com.mongodb.DBObject; /** * <p> * Default parser that does not extract any fields. Just create a {@link RepositoryEntryBO} with keywords. * </p> * * @author vibul * */ public class DefaultEntryParser extends EntryParser { private static Log4JLogger _logger = Log4JLogger.getLogger(DefaultEntryParser.class); /** * <p> * Basic constructor * </p> * * @param repoInfo * Repository meta data * @param repoParserInfo * Parser information that we need * @throws ChiliLogException */ public DefaultEntryParser(RepositoryConfigBO repoInfo, RepositoryParserConfigBO repoParserInfo) throws ChiliLogException { super(repoInfo, repoParserInfo); return; } /** * Parse a string for fields. All exceptions are caught and logged. If <code>null</code> is returned, this indicates * that the entry should be skipped. * * @param timestamp * Time when this log entry was created at the source on the host. * @param source * Name of the input device or application that created this text entry * @param host * IP address of the input device or application that created this text entry * @param severity * Classifies the importance of the entry. Can be the severity code (0-7) or text. * @param preparsedFields * Pre-parsed fields in JSON format. * @param message * The text for this entry to parse * @return <code>RepositoryEntryBO</code> ready for saving to mongoDB. If the entry cannot be parsed, then null is * returned */ @Override public RepositoryEntryBO parse(String timestamp, String source, String host, String severity, String preparsedFields, String message) { try { this.setLastParseError(null); checkParseArguments(timestamp, source, host, severity, message); Severity sev = Severity.parse(severity); ArrayList<String> keywords = parseKeywords(source, host, sev, message); DBObject fields = this.readPreparsedFields(preparsedFields); RepositoryEntryBO entry = new RepositoryEntryBO(parseTimestamp(timestamp), source, host, sev, keywords, message, fields); return entry; } catch (Exception ex) { this.setLastParseError(ex); _logger.error(ex, "Error parsing text entry: " + message); return null; } } }