/******************************************************************************* | |
* Copyright (c) 1998, 2013 Oracle and/or its affiliates. All rights reserved. | |
* This program and the accompanying materials are made available under the | |
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0 | |
* which accompanies this distribution. | |
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html | |
* and the Eclipse Distribution License is available at | |
* http://www.eclipse.org/org/documents/edl-v10.php. | |
* | |
* Contributors: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.platform.server; | |
import java.io.*; | |
import org.eclipse.persistence.internal.helper.*; | |
import org.eclipse.persistence.exceptions.*; | |
import org.eclipse.persistence.logging.*; | |
/** | |
* <p> | |
* Basic logging class that provides framework for integration with the application | |
* server log. This class is used when messages need to be logged through an application | |
* server, e.g. OC4J. | |
* | |
* @see SessionLog | |
* @see AbstractSessionLog | |
* @see SessionLogEntry | |
* @see Session | |
* </p> | |
*/ | |
public class ServerLog extends AbstractSessionLog { | |
/** | |
* PUBLIC: | |
* <p> | |
* Create and return a new ServerLog. | |
* </p> | |
*/ | |
public ServerLog() { | |
super(); | |
} | |
/** | |
* PUBLIC: | |
* <p> | |
* Log a SessionLogEntry | |
* </p><p> | |
* | |
* @param entry SessionLogEntry that holds all the information for a TopLink logging event | |
* </p> | |
*/ | |
public void log(SessionLogEntry entry) { | |
if (!shouldLog(entry.getLevel())) { | |
return; | |
} | |
String message = getSupplementDetailString(entry); | |
if (entry.hasException()) { | |
if (entry.getLevel() == SEVERE) { | |
message += Helper.printStackTraceToString(entry.getException()); | |
} else if (entry.getLevel() <= WARNING) { | |
if (shouldLogExceptionStackTrace()) { | |
message += Helper.printStackTraceToString(entry.getException()); | |
} else { | |
message += entry.getException(); | |
} | |
} | |
} else { | |
message += formatMessage(entry); | |
} | |
basicLog(entry.getLevel(), entry.getNameSpace(), message); | |
} | |
/** | |
* <p> | |
* Log message to a writer by default. It needs to be overridden by the subclasses. | |
* </p><p> | |
* | |
* @param level the log request level | |
* </p><p> | |
* @param message the formatted string message | |
* </p> | |
*/ | |
protected void basicLog(int level, String category, String message) { | |
try { | |
printPrefixString(level, null); | |
getWriter().write(message); | |
getWriter().write(Helper.cr()); | |
getWriter().flush(); | |
} catch (IOException exception) { | |
throw ValidationException.logIOError(exception); | |
} | |
} | |
} |