001 /**
002 *
003 * Copyright 2003-2004 The Apache Software Foundation
004 *
005 * Licensed under the Apache License, Version 2.0 (the "License");
006 * you may not use this file except in compliance with the License.
007 * You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017 package org.apache.geronimo.system.logging;
018
019 import java.io.Serializable;
020
021 /**
022 * @version $Rev: 355877 $ $Date: 2005-12-10 18:48:27 -0800 (Sat, 10 Dec 2005) $
023 */
024 public interface SystemLog {
025 /**
026 * The most search lines that will ever be returned, no matter what you
027 * ask for. This is to conserve memory and transfer bandwidth.
028 */
029 public final static int MAX_SEARCH_RESULTS = 1000;
030 /**
031 * Gets the name of the file that configures the log system
032 */
033 String getConfigFileName();
034 /**
035 * Sets the name of the file that the log system should configure itself from.
036 */
037 void setConfigFileName(String fileName);
038 /**
039 * Gets the name of the log level used for the root logger.
040 */
041 String getRootLoggerLevel();
042 /**
043 * Sets the name of the log level used for the root logger. Legal values
044 * are defined in GeronimoLogging.java (currently TRACE, DEBUG, INFO,
045 * WARN, ERROR, FATAL)
046 */
047 void setRootLoggerLevel(String level);
048 /**
049 * Indicates how often the log system should check to see if its
050 * configuration file has been updated.
051 */
052 int getRefreshPeriodSeconds();
053 /**
054 * Sets how often the log system should check to see if its
055 * configuration file has been updated.
056 */
057 void setRefreshPeriodSeconds(int seconds);
058 /**
059 * Gets the name of all log files used by this log system. Typically there
060 * is only one, but specialized cases may use more.
061 */
062 String[] getLogFileNames();
063 /**
064 * Searches the log for records matching the specified parameters. The
065 * maximum results returned will be the lesser of 1000 and the
066 * provided maxResults argument.
067 *
068 * @see #MAX_SEARCH_RESULTS
069 */
070 SearchResults getMatchingItems(String logFile, Integer firstLine, Integer lastLine, String minLevel,
071 String regex, int maxResults, boolean includeStackTraces);
072
073 public static class LogMessage implements Serializable {
074 private final int lineNumber;
075 private final String lineContent;
076
077 public LogMessage(int lineNumber, String lineContent) {
078 this.lineNumber = lineNumber;
079 this.lineContent = lineContent;
080 }
081
082 public int getLineNumber() {
083 return lineNumber;
084 }
085
086 public String getLineContent() {
087 return lineContent;
088 }
089 }
090
091 public static class SearchResults implements Serializable {
092 private final int lineCount; // total lines in file
093 private final LogMessage[] results;
094 private final boolean capped;
095
096 public SearchResults(int lineCount, LogMessage[] results, boolean capped) {
097 this.lineCount = lineCount;
098 this.results = results;
099 this.capped = capped;
100 }
101
102 public int getLineCount() {
103 return lineCount;
104 }
105
106 public LogMessage[] getResults() {
107 return results;
108 }
109
110 public boolean isCapped() {
111 return capped;
112 }
113 }
114 }