001/*
002 * CDDL HEADER START
003 *
004 * The contents of this file are subject to the terms of the
005 * Common Development and Distribution License, Version 1.0 only
006 * (the "License").  You may not use this file except in compliance
007 * with the License.
008 *
009 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
010 * or http://forgerock.org/license/CDDLv1.0.html.
011 * See the License for the specific language governing permissions
012 * and limitations under the License.
013 *
014 * When distributing Covered Code, include this CDDL HEADER in each
015 * file and include the License file at legal-notices/CDDLv1_0.txt.
016 * If applicable, add the following below this CDDL HEADER, with the
017 * fields enclosed by brackets "[]" replaced with your own identifying
018 * information:
019 *      Portions Copyright [yyyy] [name of copyright owner]
020 *
021 * CDDL HEADER END
022 *
023 *
024 *      Copyright 2008 Sun Microsystems, Inc.
025 */
026package org.forgerock.opendj.server.config.server;
027
028
029
030import java.util.SortedSet;
031import org.forgerock.opendj.config.server.ConfigurationChangeListener;
032import org.forgerock.opendj.ldap.DN;
033import org.forgerock.opendj.server.config.meta.FileBasedAccessLogPublisherCfgDefn.LogFormat;
034
035
036
037/**
038 * A server-side interface for querying File Based Access Log
039 * Publisher settings.
040 * <p>
041 * File Based Access Log Publishers publish access messages to the
042 * file system.
043 */
044public interface FileBasedAccessLogPublisherCfg extends AccessLogPublisherCfg {
045
046  /**
047   * Gets the configuration class associated with this File Based Access Log Publisher.
048   *
049   * @return Returns the configuration class associated with this File Based Access Log Publisher.
050   */
051  Class<? extends FileBasedAccessLogPublisherCfg> configurationClass();
052
053
054
055  /**
056   * Register to be notified when this File Based Access Log Publisher is changed.
057   *
058   * @param listener
059   *          The File Based Access Log Publisher configuration change listener.
060   */
061  void addFileBasedAccessChangeListener(ConfigurationChangeListener<FileBasedAccessLogPublisherCfg> listener);
062
063
064
065  /**
066   * Deregister an existing File Based Access Log Publisher configuration change listener.
067   *
068   * @param listener
069   *          The File Based Access Log Publisher configuration change listener.
070   */
071  void removeFileBasedAccessChangeListener(ConfigurationChangeListener<FileBasedAccessLogPublisherCfg> listener);
072
073
074
075  /**
076   * Gets the "append" property.
077   * <p>
078   * Specifies whether to append to existing log files.
079   *
080   * @return Returns the value of the "append" property.
081   */
082  boolean isAppend();
083
084
085
086  /**
087   * Gets the "asynchronous" property.
088   * <p>
089   * Indicates whether the File Based Access Log Publisher will
090   * publish records asynchronously.
091   *
092   * @return Returns the value of the "asynchronous" property.
093   */
094  boolean isAsynchronous();
095
096
097
098  /**
099   * Gets the "auto-flush" property.
100   * <p>
101   * Specifies whether to flush the writer after every log record.
102   * <p>
103   * If the asynchronous writes option is used, the writer is flushed
104   * after all the log records in the queue are written.
105   *
106   * @return Returns the value of the "auto-flush" property.
107   */
108  boolean isAutoFlush();
109
110
111
112  /**
113   * Gets the "buffer-size" property.
114   * <p>
115   * Specifies the log file buffer size.
116   *
117   * @return Returns the value of the "buffer-size" property.
118   */
119  long getBufferSize();
120
121
122
123  /**
124   * Gets the "java-class" property.
125   * <p>
126   * The fully-qualified name of the Java class that provides the File
127   * Based Access Log Publisher implementation.
128   *
129   * @return Returns the value of the "java-class" property.
130   */
131  String getJavaClass();
132
133
134
135  /**
136   * Gets the "log-control-oids" property.
137   * <p>
138   * Specifies whether control OIDs will be included in operation log
139   * records.
140   *
141   * @return Returns the value of the "log-control-oids" property.
142   */
143  boolean isLogControlOids();
144
145
146
147  /**
148   * Gets the "log-file" property.
149   * <p>
150   * The file name to use for the log files generated by the File
151   * Based Access Log Publisher. The path to the file is relative to
152   * the server root.
153   *
154   * @return Returns the value of the "log-file" property.
155   */
156  String getLogFile();
157
158
159
160  /**
161   * Gets the "log-file-permissions" property.
162   * <p>
163   * The UNIX permissions of the log files created by this File Based
164   * Access Log Publisher.
165   *
166   * @return Returns the value of the "log-file-permissions" property.
167   */
168  String getLogFilePermissions();
169
170
171
172  /**
173   * Gets the "log-format" property.
174   * <p>
175   * Specifies how log records should be formatted and written to the
176   * access log.
177   *
178   * @return Returns the value of the "log-format" property.
179   */
180  LogFormat getLogFormat();
181
182
183
184  /**
185   * Gets the "log-record-time-format" property.
186   * <p>
187   * Specifies the format string that is used to generate log record
188   * timestamps.
189   *
190   * @return Returns the value of the "log-record-time-format" property.
191   */
192  String getLogRecordTimeFormat();
193
194
195
196  /**
197   * Gets the "queue-size" property.
198   * <p>
199   * The maximum number of log records that can be stored in the
200   * asynchronous queue.
201   *
202   * @return Returns the value of the "queue-size" property.
203   */
204  int getQueueSize();
205
206
207
208  /**
209   * Gets the "retention-policy" property.
210   * <p>
211   * The retention policy to use for the File Based Access Log
212   * Publisher .
213   * <p>
214   * When multiple policies are used, log files are cleaned when any
215   * of the policy's conditions are met.
216   *
217   * @return Returns an unmodifiable set containing the values of the "retention-policy" property.
218   */
219  SortedSet<String> getRetentionPolicy();
220
221
222
223  /**
224   * Gets the "retention-policy" property as a set of DNs.
225   * <p>
226   * The retention policy to use for the File Based Access Log
227   * Publisher .
228   * <p>
229   * When multiple policies are used, log files are cleaned when any
230   * of the policy's conditions are met.
231   *
232   * @return Returns the DN values of the "retention-policy" property.
233   */
234  SortedSet<DN> getRetentionPolicyDNs();
235
236
237
238  /**
239   * Gets the "rotation-policy" property.
240   * <p>
241   * The rotation policy to use for the File Based Access Log
242   * Publisher .
243   * <p>
244   * When multiple policies are used, rotation will occur if any
245   * policy's conditions are met.
246   *
247   * @return Returns an unmodifiable set containing the values of the "rotation-policy" property.
248   */
249  SortedSet<String> getRotationPolicy();
250
251
252
253  /**
254   * Gets the "rotation-policy" property as a set of DNs.
255   * <p>
256   * The rotation policy to use for the File Based Access Log
257   * Publisher .
258   * <p>
259   * When multiple policies are used, rotation will occur if any
260   * policy's conditions are met.
261   *
262   * @return Returns the DN values of the "rotation-policy" property.
263   */
264  SortedSet<DN> getRotationPolicyDNs();
265
266
267
268  /**
269   * Gets the "time-interval" property.
270   * <p>
271   * Specifies the interval at which to check whether the log files
272   * need to be rotated.
273   *
274   * @return Returns the value of the "time-interval" property.
275   */
276  long getTimeInterval();
277
278}