From d755882f59202fe62b2ad5a141b3c044c1898aa6 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Thu, 03 May 2007 21:55:23 +0000
Subject: [PATCH] Major changes made to the logging framework. It should resolve the following issues:
---
opends/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java | 78 ++++++++++++++++++++++++++++-----------
1 files changed, 56 insertions(+), 22 deletions(-)
diff --git a/opends/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java b/opends/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java
index 332d49a..9639fe7 100644
--- a/opends/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java
+++ b/opends/src/server/org/opends/server/loggers/FileNumberRetentionPolicy.java
@@ -26,57 +26,91 @@
*/
package org.opends.server.loggers;
+import org.opends.server.admin.std.server.FileCountLogRetentionPolicyCfg;
+import org.opends.server.admin.server.ConfigurationChangeListener;
+
import java.io.File;
import java.util.Arrays;
+import java.util.List;
+import java.util.ArrayList;
+
+import static org.opends.server.loggers.debug.DebugLogger.debugEnabled;
+import static org.opends.server.loggers.debug.DebugLogger.debugInfo;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.ResultCode;
/**
* This class implements a retention policy based on the number of files.
* Files will be cleaned up based on the number of files on disk.
*/
-public class FileNumberRetentionPolicy implements RetentionPolicy
+public class FileNumberRetentionPolicy implements
+ RetentionPolicy<FileCountLogRetentionPolicyCfg>,
+ ConfigurationChangeListener<FileCountLogRetentionPolicyCfg>
{
private int numFiles = 0;
- private File directory = null;
- private String prefix = null;
/**
- * Create the retention policy based on the number of files.
- *
- * @param dir The directory in which the log files reside.
- * @param prefix The prefix for the log file names.
- * @param numFiles The number of files on disk.
+ * {@inheritDoc}
*/
- public FileNumberRetentionPolicy(String dir, String prefix, int numFiles)
+ public void initializeLogRetentionPolicy(
+ FileCountLogRetentionPolicyCfg config)
{
- this.numFiles = numFiles;
- this.directory = new File(dir);
- this.prefix = prefix;
+ numFiles = config.getNumberOfFiles();
+
+ config.addFileCountChangeListener(this);
}
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isConfigurationChangeAcceptable(
+ FileCountLogRetentionPolicyCfg config,
+ List<String> unacceptableReasons)
+ {
+ // Changes should always be OK
+ return true;
+ }
/**
- * This method deletes files based on the policy.
- *
- * @return number of files deleted.
+ * {@inheritDoc}
*/
- public int deleteFiles()
+ public ConfigChangeResult applyConfigurationChange(
+ FileCountLogRetentionPolicyCfg config)
+ {
+ // Default result code.
+ ResultCode resultCode = ResultCode.SUCCESS;
+ boolean adminActionRequired = false;
+ ArrayList<String> messages = new ArrayList<String>();
+
+ numFiles = config.getNumberOfFiles();
+
+ return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public int deleteFiles(MultifileTextWriter writer)
{
int count = 0;
+ File[] files = writer.getNamingPolicy().listFiles();
- File[] selectedFiles = directory.listFiles(new LogFileFilter(prefix));
- if (selectedFiles.length <= numFiles)
+ if (files.length <= numFiles)
{
return 0;
}
// Sort files based on last modified time.
- Arrays.sort(selectedFiles, new FileComparator());
+ Arrays.sort(files, new FileComparator());
- for (int j = numFiles; j < selectedFiles.length; j++)
+ for (int j = numFiles; j < files.length; j++)
{
- // System.out.println("Deleting log file:" + selectedFiles[j]);
- selectedFiles[j].delete();
+ if(debugEnabled())
+ {
+ debugInfo("Deleting log file:", files[j]);
+ }
+ files[j].delete();
count++;
}
--
Gitblit v1.10.0