gluu
公開メンバ関数 | 変数 | 非公開メンバ関数 | 非公開変数類 | 静的非公開変数類 | 全メンバ一覧
org.gluu.oxtrust.ldap.service.LogFileSizeChecker クラス
org.gluu.oxtrust.ldap.service.LogFileSizeChecker 連携図
Collaboration graph

公開メンバ関数

void initTimer ()
 
void process (@Observes @Scheduled LogFileSizeChekerEvent logFileSizeChekerEvent)
 

変数

ApplianceService applianceService
 

非公開メンバ関数

void processInt ()
 
List< LogDirreadConfig (String source)
 

非公開変数類

Logger log
 
Event< TimerEvent > timerEvent
 
XmlService xmlService
 
AtomicBoolean isActive
 

静的非公開変数類

static final int DEFAULT_INTERVAL = 60 * 60 * 24
 

詳解

関数詳解

◆ initTimer()

void org.gluu.oxtrust.ldap.service.LogFileSizeChecker.initTimer ( )
inline
62  {
63  log.info("Initializing Log File Size Checker Timer");
64  this.isActive = new AtomicBoolean(false);
65 
66  final int delay = 2 * 60;
67  final int interval = DEFAULT_INTERVAL;
68 
69  timerEvent.fire(new TimerEvent(new TimerSchedule(delay, interval), new LogFileSizeChekerEvent(),
70  Scheduled.Literal.INSTANCE));
71  }
Logger log
Definition: LogFileSizeChecker.java:49
AtomicBoolean isActive
Definition: LogFileSizeChecker.java:60
Event< TimerEvent > timerEvent
Definition: LogFileSizeChecker.java:52
static final int DEFAULT_INTERVAL
Definition: LogFileSizeChecker.java:46

◆ process()

void org.gluu.oxtrust.ldap.service.LogFileSizeChecker.process ( @Observes @Scheduled LogFileSizeChekerEvent  logFileSizeChekerEvent)
inline
74  {
75  if (this.isActive.get()) {
76  return;
77  }
78 
79  if (!this.isActive.compareAndSet(false, true)) {
80  return;
81  }
82 
83  try {
84  processInt();
85  } finally {
86  this.isActive.set(false);
87  }
88  }
void processInt()
Definition: LogFileSizeChecker.java:93
AtomicBoolean isActive
Definition: LogFileSizeChecker.java:60

◆ processInt()

void org.gluu.oxtrust.ldap.service.LogFileSizeChecker.processInt ( )
inlineprivate

Gather periodically site and server status

93  {
94  GluuAppliance appliance;
95  appliance = applianceService.getAppliance();
96  String maxLogSize = appliance.getMaxLogSize();
97  log.debug("Max Log Size: " + maxLogSize);
98  long maxSize = 0;
99 
100  try {
101  maxSize = Long.parseLong(maxLogSize); // MB
102  } catch (Exception ex) {
103  log.error("appliance maxLogSize value is invalid: " + maxLogSize);
104  log.error("assuming 0");
105  }
106 
107  if (maxSize > 0) {
108 
109  log.debug("Max Log Size: " + maxLogSize);
110 
111  long maxSizeInByte = maxSize * 1024 * 1024;
112  long currentSize = 0;
113  Date today = new Date();
114  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
115  String todayStr = sdf.format(today);
116 
117  log.debug("Getting the tomcat home directory");
118  String filePath = ConfigurationFactory.DIR
119  + ConfigurationFactory.LOG_ROTATION_CONFIGURATION;
120  log.debug("FilePath: " + filePath);
121 
122  List<LogDir> logDirs = readConfig(filePath);
123 
124  List<FileData> fDataList = new ArrayList<FileData>();
125  for (LogDir logDir : logDirs) {
126  File file = new File(logDir.getLocation());
127  File[] files = file.listFiles();
128  long totalSize = 0;
129 
130  if (files != null && files.length > 0) {
131  for (File singleFile : files) {
132  if (singleFile.getName().startsWith(logDir.getPrefix()) && singleFile.getName().endsWith(logDir.getExtension())) {
133  totalSize += singleFile.length();
134  FileData fData = new FileData(singleFile.getName(), logDir.getLocation(), singleFile.lastModified(),
135  singleFile.length());
136  fDataList.add(fData);
137  }
138  }
139  }
140 
141  currentSize += totalSize;
142  logDir.setLength(totalSize);
143  }
144 
145  Collections.sort(fDataList);
146  if (currentSize > maxSizeInByte) {
147  maxSizeInByte -= (maxSizeInByte * 15) / 100; // empty 15% space
148  // less of the
149  // maximum
150  // allocated
151  }
152  for (FileData fileData : fDataList) {
153  if (currentSize < maxSizeInByte) {
154  break;
155  }
156  Date date = new Date(fileData.getLastModified());
157  String dateStr = sdf.format(date);
158  if (todayStr.equals(dateStr)) {
159  log.debug("--Skipped Active File: " + fileData.getName() + " Date: " + sdf.format(date) + " Size: "
160  + fileData.getSize());
161  continue;
162  }
163 
164  File singleFile = new File(fileData.getFilePath() + "/" + fileData.getName());
165  if (!singleFile.delete()) {
166  log.error("Failed to delete the file.");
167  } else {
168  currentSize -= fileData.getSize();
169  log.debug("--Deleted File Name: " + fileData.getName() + " Date: " + sdf.format(date) + " Size: " + fileData.getSize());
170  }
171  }
172  }
173  }
Logger log
Definition: LogFileSizeChecker.java:49
GluuAppliance getAppliance(String[] returnAttributes)
Definition: ApplianceService.java:111
List< LogDir > readConfig(String source)
Definition: LogFileSizeChecker.java:175
ApplianceService applianceService
Definition: LogFileSizeChecker.java:55
String getMaxLogSize()
Definition: GluuAppliance.java:422

◆ readConfig()

List<LogDir> org.gluu.oxtrust.ldap.service.LogFileSizeChecker.readConfig ( String  source)
inlineprivate
175  {
176  List<LogDir> logDirs = new ArrayList<LogDir>();
177  try {
178  org.w3c.dom.Document document = xmlService.getXmlDocument(FileUtils.readFileToByteArray(new File(source)));
179  XPath xPath = XPathFactory.newInstance().newXPath();
180  XPathExpression entriesXPath = xPath.compile("/entries/entry");
181 
182  NodeList list = (NodeList) entriesXPath.evaluate(document, XPathConstants.NODESET);
183  for (int i = 0; i < list.getLength(); i++) {
184  Node node = list.item(i);
185 
186  String prefix = null;
187  String location = null;
188  String extension = null;
189 
190  NodeList subList = node.getChildNodes();
191  for (int j = 0; j < subList.getLength(); j++) {
192  Node subNode = subList.item(j);
193  String subNodeName = subNode.getNodeName();
194  String subNodeValue = subNode.getTextContent();
195 
196  if (StringHelper.equalsIgnoreCase(subNodeName, "prefix")) {
197  prefix = subNodeValue;
198  } else if (StringHelper.equalsIgnoreCase(subNodeName, "location")) {
199  location = subNodeValue;
200  } else if (StringHelper.equalsIgnoreCase(subNodeName, "extension")) {
201  extension = subNodeValue;
202  }
203  }
204 
205  if (extension == null || extension.trim().equals("")) {
206  extension = "log";
207  }
208 
209  LogDir logDir = new LogDir(prefix, location, extension);
210  logDirs.add(logDir);
211  log.debug("Prefix: " + prefix + " Location: " + location);
212  }
213  } catch (Exception ex) {
214  log.debug("Exception while reading configuration file: " + ex);
215  }
216  return logDirs;
217  }
Logger log
Definition: LogFileSizeChecker.java:49
XmlService xmlService
Definition: LogFileSizeChecker.java:58

メンバ詳解

◆ applianceService

ApplianceService org.gluu.oxtrust.ldap.service.LogFileSizeChecker.applianceService
package

◆ DEFAULT_INTERVAL

final int org.gluu.oxtrust.ldap.service.LogFileSizeChecker.DEFAULT_INTERVAL = 60 * 60 * 24
staticprivate

◆ isActive

AtomicBoolean org.gluu.oxtrust.ldap.service.LogFileSizeChecker.isActive
private

◆ log

Logger org.gluu.oxtrust.ldap.service.LogFileSizeChecker.log
private

◆ timerEvent

Event<TimerEvent> org.gluu.oxtrust.ldap.service.LogFileSizeChecker.timerEvent
private

◆ xmlService

XmlService org.gluu.oxtrust.ldap.service.LogFileSizeChecker.xmlService
private

このクラス詳解は次のファイルから抽出されました: