logger.java
来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 1,168 行 · 第 1/3 页
JAVA
1,168 行
{
return resourceBundleName;
}
/**
* Returns the resource bundle that is being used for localizing
* messages.
*
* @return the resource bundle used for localizing messages,
* or <code>null</code> if the parent's resource bundle
* is used for this purpose.
*/
public synchronized ResourceBundle getResourceBundle()
{
return resourceBundle;
}
/**
* Returns the severity level threshold for this <code>Handler</code>.
* All log records with a lower severity level will be discarded;
* a log record of the same or a higher level will be published
* unless an installed <code>Filter</code> decides to discard it.
*
* @return the severity level below which all log messages will be
* discarded, or <code>null</code> if the logger inherits
* the threshold from its parent.
*/
public synchronized Level getLevel()
{
return level;
}
/**
* Returns whether or not a message of the specified level
* would be logged by this logger.
*
* @throws NullPointerException if <code>level</code>
* is <code>null</code>.
*/
public synchronized boolean isLoggable(Level level)
{
if (this.level != null)
return this.level.intValue() <= level.intValue();
if (parent != null)
return parent.isLoggable(level);
else
return false;
}
/**
* Sets the severity level threshold for this <code>Handler</code>.
* All log records with a lower severity level will be discarded
* immediately. A log record of the same or a higher level will be
* published unless an installed <code>Filter</code> decides to
* discard it.
*
* @param level the severity level below which all log messages
* will be discarded, or <code>null</code> to
* indicate that the logger should inherit the
* threshold from its parent.
*
* @throws SecurityException if this logger is not anonymous, a
* security manager exists, and the caller is not granted
* the permission to control the logging infrastructure by
* having LoggingPermission("control"). Untrusted code can
* obtain an anonymous logger through the static factory method
* {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
public synchronized void setLevel(Level level)
{
/* An application is allowed to control an anonymous logger
* without having the permission to control the logging
* infrastructure.
*/
if (!anonymous)
LogManager.getLogManager().checkAccess();
this.level = level;
}
public synchronized Filter getFilter()
{
return filter;
}
/**
* @throws SecurityException if this logger is not anonymous, a
* security manager exists, and the caller is not granted
* the permission to control the logging infrastructure by
* having LoggingPermission("control"). Untrusted code can
* obtain an anonymous logger through the static factory method
* {@link #getAnonymousLogger(java.lang.String) getAnonymousLogger}.
*/
public synchronized void setFilter(Filter filter)
throws SecurityException
{
/* An application is allowed to control an anonymous logger
* without having the permission to control the logging
* infrastructure.
*/
if (!anonymous)
LogManager.getLogManager().checkAccess();
this.filter = filter;
}
/**
* Returns the name of this logger.
*
* @return the name of this logger, or <code>null</code> if
* the logger is anonymous.
*/
public String getName()
{
/* Note that the name of a logger cannot be changed during
* its lifetime, so no synchronization is needed.
*/
return name;
}
/**
* Passes a record to registered handlers, provided the record
* is considered as loggable both by {@link #isLoggable(Level)}
* and a possibly installed custom {@link #setFilter(Filter) filter}.
*
* <p>If the logger has been configured to use parent handlers,
* the record will be forwarded to the parent of this logger
* in addition to being processed by the handlers registered with
* this logger.
*
* <p>The other logging methods in this class are convenience methods
* that merely create a new LogRecord and pass it to this method.
* Therefore, subclasses usually just need to override this single
* method for customizing the logging behavior.
*
* @param record the log record to be inspected and possibly forwarded.
*/
public synchronized void log(LogRecord record)
{
if (!isLoggable(record.getLevel()))
return;
if ((filter != null) && !filter.isLoggable(record))
return;
/* If no logger name has been set for the log record,
* use the name of this logger.
*/
if (record.getLoggerName() == null)
record.setLoggerName(name);
/* Avoid that some other thread is changing the logger hierarchy
* while we are traversing it.
*/
synchronized (LogManager.getLogManager())
{
Logger curLogger = this;
do
{
/* The Sun J2SE 1.4 reference implementation seems to call the
* filter only for the logger whose log method is called,
* never for any of its parents. Also, parent loggers publish
* log record whatever their level might be. This is pretty
* weird, but GNU Classpath tries to be as compatible as
* possible to the reference implementation.
*/
for (int i = 0; i < curLogger.handlers.length; i++)
curLogger.handlers[i].publish(record);
if (curLogger.getUseParentHandlers() == false)
break;
curLogger = curLogger.getParent();
}
while (parent != null);
}
}
public void log(Level level, String message)
{
log(level, message, (Object[]) null);
}
public synchronized void log(Level level,
String message,
Object param)
{
logp(level,
/* sourceClass*/ null,
/* sourceMethod */ null,
message,
param);
}
public synchronized void log(Level level,
String message,
Object[] params)
{
logp(level,
/* sourceClass*/ null,
/* sourceMethod */ null,
message,
params);
}
public synchronized void log(Level level,
String message,
Throwable thrown)
{
logp(level,
/* sourceClass*/ null,
/* sourceMethod */ null,
message,
thrown);
}
public synchronized void logp(Level level,
String sourceClass,
String sourceMethod,
String message)
{
logp(level, sourceClass, sourceMethod, message,
(Object[]) null);
}
public synchronized void logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Object param)
{
logp(level, sourceClass, sourceMethod, message,
new Object[] { param });
}
private synchronized ResourceBundle findResourceBundle()
{
if (resourceBundle != null)
return resourceBundle;
if (parent != null)
return parent.findResourceBundle();
return null;
}
private synchronized void logImpl(Level level,
String sourceClass,
String sourceMethod,
String message,
Object[] params)
{
LogRecord rec = new LogRecord(level, message);
rec.setResourceBundle(findResourceBundle());
rec.setSourceClassName(sourceClass);
rec.setSourceMethodName(sourceMethod);
rec.setParameters(params);
log(rec);
}
public synchronized void logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Object[] params)
{
logImpl(level, sourceClass, sourceMethod, message, params);
}
public synchronized void logp(Level level,
String sourceClass,
String sourceMethod,
String message,
Throwable thrown)
{
LogRecord rec = new LogRecord(level, message);
rec.setResourceBundle(resourceBundle);
rec.setSourceClassName(sourceClass);
rec.setSourceMethodName(sourceMethod);
rec.setThrown(thrown);
log(rec);
}
public synchronized void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message)
{
logrb(level, sourceClass, sourceMethod, bundleName,
message, (Object[]) null);
}
public synchronized void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Object param)
{
logrb(level, sourceClass, sourceMethod, bundleName,
message, new Object[] { param });
}
public synchronized void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Object[] params)
{
LogRecord rec = new LogRecord(level, message);
rec.setResourceBundleName(bundleName);
rec.setSourceClassName(sourceClass);
rec.setSourceMethodName(sourceMethod);
rec.setParameters(params);
log(rec);
}
public synchronized void logrb(Level level,
String sourceClass,
String sourceMethod,
String bundleName,
String message,
Throwable thrown)
{
LogRecord rec = new LogRecord(level, message);
rec.setResourceBundleName(bundleName);
rec.setSourceClassName(sourceClass);
rec.setSourceMethodName(sourceMethod);
rec.setThrown(thrown);
log(rec);
}
public synchronized void entering(String sourceClass,
String sourceMethod)
{
if (isLoggable(Level.FINER))
logp(Level.FINER, sourceClass, sourceMethod, "ENTRY");
}
public synchronized void entering(String sourceClass,
String sourceMethod,
Object param)
{
if (isLoggable(Level.FINER))
logp(Level.FINER, sourceClass, sourceMethod, "ENTRY {0}", param);
}
public synchronized void entering(String sourceClass,
String sourceMethod,
Object[] params)
{
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?