001    /**
002     * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.kernel.test;
016    
017    import java.util.List;
018    import java.util.concurrent.CopyOnWriteArrayList;
019    import java.util.logging.Handler;
020    import java.util.logging.Level;
021    import java.util.logging.LogRecord;
022    import java.util.logging.Logger;
023    
024    /**
025     * @author Shuyang Zhou
026     */
027    public class JDKLoggerTestUtil {
028    
029            public static List<LogRecord> configureJDKLogger(String name, Level level) {
030                    Logger logger = Logger.getLogger(name);
031    
032                    for (Handler handler : logger.getHandlers()) {
033                            logger.removeHandler(handler);
034                    }
035    
036                    logger.setLevel(level);
037                    logger.setUseParentHandlers(false);
038    
039                    CaptureHandler captureHandler = new CaptureHandler();
040    
041                    logger.addHandler(captureHandler);
042    
043                    return captureHandler._logRecords;
044            }
045    
046            private static class CaptureHandler extends Handler {
047    
048                    @Override
049                    public void close() throws SecurityException {
050                            _logRecords.clear();
051                    }
052    
053                    @Override
054                    public void flush() {
055                            _logRecords.clear();
056                    }
057    
058                    @Override
059                    public boolean isLoggable(LogRecord logRecord) {
060                            return false;
061                    }
062    
063                    @Override
064                    public void publish(LogRecord logRecord) {
065                            _logRecords.add(logRecord);
066                    }
067    
068                    private List<LogRecord> _logRecords =
069                            new CopyOnWriteArrayList<LogRecord>();
070    
071            }
072    
073    }