StdDebugFile.java revision 10165d7e4cd84a62ad539bbc21526ff549137fc1
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson/**
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * The contents of this file are subject to the terms of the Common Development and
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * Distribution License (the License). You may not use this file except in compliance with the
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * License.
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson *
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * specific language governing permission and limitations under the License.
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson *
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * When distributing Covered Software, include this CDDL Header Notice in each file and include
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * Header, with the fields enclosed by brackets [] replaced by your own identifying
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * information: "Portions copyright [year] [name of copyright owner]".
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson *
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * Copyright 2014-2015 ForgeRock AS.
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac */
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignacpackage com.sun.identity.shared.debug.file.impl;
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignac
3437829f938dbb44527d91fbbc5f430a1243c5a5JnRouvignacimport com.sun.identity.shared.debug.DebugConstants;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport com.sun.identity.shared.debug.IDebug;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport com.sun.identity.shared.debug.file.DebugFile;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport com.sun.identity.shared.debug.impl.DebugImpl;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport java.io.IOException;
05b42f00b813c3dc70cbb80d62089f9cc0f6f549ludovicpimport java.io.PrintWriter;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport java.io.StringWriter;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport java.text.SimpleDateFormat;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonimport java.util.Date;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson/**
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * Debug file dedicated to std out
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson */
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilsonpublic class StdDebugFile implements DebugFile {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson private static final StdDebugFile INSTANCE = new StdDebugFile();
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson private PrintWriter stdoutWriter = new PrintWriter(System.out, true);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson private StdDebugFile() {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson }
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson /**
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * Get std out debug file
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson *
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * @return std debug file
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson */
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson public static StdDebugFile getInstance() {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson return INSTANCE;
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson }
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson @Override
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson public void writeIt(String prefix, String msg, Throwable th) throws IOException {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson StringBuilder buf = new StringBuilder(prefix);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson buf.append('\n');
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson buf.append(msg);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson if (th != null) {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson buf.append('\n');
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson StringWriter stBuf = new StringWriter(DebugConstants.MAX_BUFFER_SIZE_EXCEPTION);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson PrintWriter stackStream = new PrintWriter(stBuf);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson th.printStackTrace(stackStream);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson stackStream.flush();
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson buf.append(stBuf.toString());
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson }
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson stdoutWriter.println(buf.toString());
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson }
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson /**
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * Printing error directly into the stdout. A log header will be generated
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson *
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * @param debugName debug name
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * @param message the error message
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson * @param ex the exception (can be null)
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson */
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson public static void printError(String debugName, String message, Throwable ex) {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss:SSS a zzz");
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson String prefix = debugName + ":" + dateFormat.format(new Date()) + ": " + Thread.currentThread().toString() +
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson "\n";
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson System.err.println(prefix + message);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson if (ex != null) {
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson ex.printStackTrace(System.err);
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson }
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson }
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson}
14b0770b613896800c1b5544730da9b736e1c9baneil_a_wilson