Java tutorial
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.phoenix.logging; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.commons.lang.time.StopWatch; /** * Performance data logging * */ public class PerformanceLog { private StopWatch stopWatch = null; private static FileOutputStream fostream = null; public PerformanceLog(String startMessage) throws IOException { getStopWatch().start(); instanceLog("START: " + startMessage); } public static void startLog() throws FileNotFoundException { getFileOutputStream(); } public static void startLog(String fileName) throws FileNotFoundException { getFileOutputStream(fileName); } public static void stopLog() throws FileNotFoundException, IOException { getFileOutputStream().close(); fostream = null; } public void stopStopWatch() throws IOException { getStopWatch().stop(); instanceLog("STOP"); } public void stopStopWatch(String message) throws IOException { getStopWatch().stop(); instanceLog("STOP: " + message); } /** * Log a message to persistent storage. Elapsed time since start is added. * @param message * @throws IOException */ public void instanceLog(String message) throws IOException { long elapsedMs = getStopWatch().getTime(); String displayTime = elapsedMs < 1000 ? elapsedMs + " ms" : elapsedMs / 1000 + " sec"; message = getDateTime() + " (" + displayTime + ") : " + message + "\n"; System.out.println(message); getFileOutputStream().write(message.getBytes()); } public static void log(String message) throws IOException { message = getDateTime() + ": " + message + "\n"; System.out.println(message); getFileOutputStream().write(message.getBytes()); } private static FileOutputStream getFileOutputStream() throws FileNotFoundException { return getFileOutputStream(null); } private static FileOutputStream getFileOutputStream(String fileName) throws FileNotFoundException { if (fostream == null) { String folderName = "results"; File folder = new File(folderName); if (!folder.exists()) { folder.mkdir(); } String generatedFileName = folderName + "/" + (fileName.endsWith("|") ? fileName.substring(0, fileName.length() - 1) : fileName) + ".txt"; fostream = new FileOutputStream(generatedFileName); } return fostream; } private StopWatch getStopWatch() { if (stopWatch == null) { stopWatch = new StopWatch(); } return stopWatch; } private final static String getDateTime() { DateFormat df = new SimpleDateFormat("yyyy-MM-dd_hh:mm:ss"); return df.format(new Date()); } }