public final synchronized String[] getLogLines(final boolean reversed, int lineCount) {
if ((lineCount > this.count)||(lineCount < 0)) lineCount = this.count;
final List<String> logMessages = new ArrayList<String>(this.count);
final Formatter logFormatter = getFormatter();
try {
final int theStart = (reversed) ? this.start+this.count-1 : this.start+this.count-lineCount;
LogRecord record=null;
for (int i = 0; i < lineCount; i++) {
final int ix = (reversed) ?
Math.abs((theStart-i)%this.buffer.length) :
(theStart + i) % this.buffer.length;
record = this.buffer[ix];
logMessages.add(logFormatter.format(record));
}
return logMessages.toArray(new String[logMessages.size()]);
} catch (final Exception ex) {
// We don't want to throw an exception here, but we
// report the exception to any registered ErrorManager.