/*******************************************************************************
* Copyright 2014 Analog Devices, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
********************************************************************************/
package com.analog.lyric.util.test;
import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import net.jcip.annotations.ThreadSafe;
import org.eclipse.jdt.annotation.NonNullByDefault;
/**
* A {@link java.util.logging.Logger} implementation that simply saves all its log records
* for test verification purposes.
* <p>
* @since 0.07
* @author Christopher Barber
*/
@ThreadSafe
public class TestLogger extends Logger
{
private ConcurrentLinkedQueue<LogRecord> _logRecords = new ConcurrentLinkedQueue<>();
@NonNullByDefault(false)
private class TestHandler extends java.util.logging.Handler
{
@Override
public void close() throws SecurityException
{
}
@Override
public void flush()
{
}
@Override
public void publish(LogRecord record)
{
_logRecords.add(record);
}
}
/*--------------
* Construction
*/
/**
* Construct logger with
* <p>
* The constructor is configured to log all records by default.
* <p>
* @param name
* @since 0.07
*/
public TestLogger(String name)
{
super(name, null);
setLevel(Level.ALL);
addHandler(new TestHandler());
}
/*--------------------
* TestLogger methods
*/
/**
* View of records logged so far.
* <p>
* @since 0.07
*/
public Queue<LogRecord> loggedRecords()
{
return _logRecords;
}
}