All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.jetty.util.log.StdErrLog Maven / Gradle / Ivy

There is a newer version: 11.0.0.beta1
Show newest version
// ========================================================================
// Copyright (c) 2004-2009 Mort Bay Consulting Pty. Ltd.
// ------------------------------------------------------------------------
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v1.0
// and Apache License v2.0 which accompanies this distribution.
// The Eclipse Public License is available at
// http://www.eclipse.org/legal/epl-v10.html
// The Apache License v2.0 is available at
// http://www.opensource.org/licenses/apache2.0.php
// You may elect to redistribute this code under either of these licenses.
// ========================================================================

package org.eclipse.jetty.util.log;

import java.security.AccessControlException;

import org.eclipse.jetty.util.DateCache;

/**
 * StdErr Logging. This implementation of the Logging facade sends all logs to
 * StdErr with minimal formatting.
 * 

* If the system property "org.eclipse.jetty.util.log.DEBUG" is set, then debug * logs are printed if stderr is being used. For named debuggers, the system * property name+".DEBUG" is checked. If it is not not set, then * "org.eclipse.jetty.util.log.DEBUG" is used as the default. *

* If the system property "org.eclipse.jetty.util.log.SOURCE" is set, then the * source method/file of a log is logged. For named debuggers, the system * property name+".SOURCE" is checked. If it is not not set, then * "org.eclipse.jetty.util.log.SOURCE" is used as the default. * */ public class StdErrLog implements Logger { private static DateCache _dateCache; private final static boolean __debug = Boolean.parseBoolean( System.getProperty("org.eclipse.jetty.util.log.DEBUG", System.getProperty("org.eclipse.jetty.util.log.stderr.DEBUG", "false"))); private final static boolean __source = Boolean.parseBoolean( System.getProperty("org.eclipse.jetty.util.log.SOURCE", System.getProperty("org.eclipse.jetty.util.log.stderr.SOURCE", "false"))); static { try { _dateCache = new DateCache("yyyy-MM-dd HH:mm:ss"); } catch (Exception x) { x.printStackTrace(); } } private boolean _debug = __debug; private boolean _source = __source; private final String _name; private boolean _hideStacks = false; public StdErrLog() { this(null); } public StdErrLog(String name) { this._name = name == null ? "" : name; try { _debug = Boolean.parseBoolean(System.getProperty(_name + ".DEBUG", Boolean.toString(_debug))); } catch (AccessControlException ace) { _debug = __debug; } try { _source = Boolean.parseBoolean(System.getProperty(_name + ".SOURCE", Boolean.toString(_source))); } catch (AccessControlException ace) { _source = __source; } } public String getName() { return _name; } public boolean isHideStacks() { return _hideStacks; } public void setHideStacks(boolean hideStacks) { _hideStacks = hideStacks; } /* ------------------------------------------------------------ */ /** Is the source of a log, logged * @return true if the class, method, file and line number of a log is logged. */ public boolean isSource() { return _source; } /* ------------------------------------------------------------ */ /** Set if a log source is logged. * @param source true if the class, method, file and line number of a log is logged. */ public void setSource(boolean source) { _source = source; } public void warn(String msg, Object... args) { StringBuilder buffer = new StringBuilder(64); format(buffer, ":WARN:", msg, args); System.err.println(buffer); } public void warn(Throwable thrown) { warn("", thrown); } public void warn(String msg, Throwable thrown) { StringBuilder buffer = new StringBuilder(64); format(buffer, ":WARN:", msg, thrown); System.err.println(buffer); } public void info(String msg, Object... args) { StringBuilder buffer = new StringBuilder(64); format(buffer, ":INFO:", msg, args); System.err.println(buffer); } public void info(Throwable thrown) { info("", thrown); } public void info(String msg, Throwable thrown) { StringBuilder buffer = new StringBuilder(64); format(buffer, ":INFO:", msg, thrown); System.err.println(buffer); } public boolean isDebugEnabled() { return _debug; } public void setDebugEnabled(boolean enabled) { _debug = enabled; } public void debug(String msg, Object... args) { if (!_debug) return; StringBuilder buffer = new StringBuilder(64); format(buffer, ":DBUG:", msg, args); System.err.println(buffer); } public void debug(Throwable thrown) { debug("", thrown); } public void debug(String msg, Throwable thrown) { if (!_debug) return; StringBuilder buffer = new StringBuilder(64); format(buffer, ":DBUG:", msg, thrown); System.err.println(buffer); } private void format(StringBuilder buffer, String level, String msg, Object... args) { String d = _dateCache.now(); int ms = _dateCache.lastMs(); tag(buffer, d, ms, level); format(buffer, msg, args); } private void format(StringBuilder buffer, String level, String msg, Throwable thrown) { format(buffer, level, msg); if (isHideStacks()) format(buffer, String.valueOf(thrown)); else format(buffer, thrown); } private void tag(StringBuilder buffer, String d, int ms, String tag) { buffer.setLength(0); buffer.append(d); if (ms > 99) buffer.append('.'); else if (ms > 9) buffer.append(".0"); else buffer.append(".00"); buffer.append(ms).append(tag).append(_name).append(':'); if (_source) { Throwable source = new Throwable(); StackTraceElement[] frames = source.getStackTrace(); for (int i=0;i-->



© 2015 - 2024 Weber Informatics LLC | Privacy Policy