Package freemarker.log
Class Logger
java.lang.Object
freemarker.log.Logger
Delegates logger creation to an actual logging library. By default it looks for logger libraries in this order (in
FreeMarker 2.3.x): Log4J, Avalon LogKit, JUL (i.e.,
java.util.logging
). Prior to FreeMarker 2.4, SLF4J and
Apache Commons Logging aren't searched automatically due to backward compatibility constraints. But if you have
log4j-over-slf4j
properly installed (means, you have no real Log4j in your class path, and SLF4J has a
backing implementation like logback-classic
), then FreeMarker will use SLF4J directly instead of Log4j (since
FreeMarker 2.3.22).
If the auto detection sequence describet above doesn't give you the result that you want, see
SYSTEM_PROPERTY_NAME_LOGGER_LIBRARY
.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic int
Enum value used forselectLoggerLibrary(int)
; indicates auto-selection as described in the class documentation ofLogger()
.static int
Deprecated.Avalon LogKit support will be removed sometimes in the future.static int
Enum value used forselectLoggerLibrary(int)
; indicates that Apache commons-logging should be used.static int
Enum value used forselectLoggerLibrary(int)
; indicates thatjava.util.logging
should be used.static int
Enum value used forselectLoggerLibrary(int)
; indicates that Log4J should be used.static String
"org.freemarker.loggerLibrary" property value; indicates auto-selection as described in the class documentation ofLogger()
.static String
Deprecated.Avalon LogKit support will be removed sometimes in the future.static String
"org.freemarker.loggerLibrary" property value; indicates that Apache commons-logging should be used.static String
"org.freemarker.loggerLibrary" property value; indicates thatjava.util.logging
should be used.static String
"org.freemarker.loggerLibrary" property value; indicates that Log4J should be used.static String
"org.freemarker.loggerLibrary" property value; indicates that no logging should occur.static String
"org.freemarker.loggerLibrary" property value; indicates that SLF4J should be used.static int
Enum value used forselectLoggerLibrary(int)
; indicates that no logging should occur.static int
Constant used withselectLoggerLibrary(int)
; indicates that SLF4J should be used.static String
The "org.freemarker.loggerLibrary" system property is used to select a logger library explicitly, rather than relying on automatic selection. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void
Logs a debugging message.abstract void
Logs a debugging message with accompanying throwable.abstract void
Logs an error message.abstract void
Logs an error message with accompanying throwable.static Logger
Returns a logger for the specified category.abstract void
Logs an informational message.abstract void
Logs an informational message with accompanying throwable.abstract boolean
Returns true if this logger will log debug messages.abstract boolean
Returns true if this logger will log error messages.abstract boolean
Returns true if this logger will log fatal error messages.abstract boolean
Returns true if this logger will log informational messages.abstract boolean
Returns true if this logger will log warning messages.static void
selectLoggerLibrary(int libraryEnum)
Deprecated.This method isn't reliable, unless you can somehow ensure that you access the FreeMarker classes first; use the "org.freemarker.loggerLibrary" Java system property instead, likejava ... -Dorg.freemarker.loggerLibrary=slf4j
.static void
setCategoryPrefix(String prefix)
Deprecated.This wasn't reliable, unless you can somehow ensure that you access the FreeMarker classes first.abstract void
Logs a warning message.abstract void
Logs a warning message with accompanying throwable.
-
Field Details
-
SYSTEM_PROPERTY_NAME_LOGGER_LIBRARY
The "org.freemarker.loggerLibrary" system property is used to select a logger library explicitly, rather than relying on automatic selection. You meant to set this system property where the JVM is started, likejava ... -Dorg.freemarker.loggerLibrary=SLF4J
. Setting it from Java code isn't reliable, also it can cause confusion if you override the value set by others with-D
.If the requested logging library is not available, an error will be printed to the stderr, then logging will be disabled.
The supported values are:
- Since:
- 2.3.22
- See Also:
- Constant Field Values
-
LIBRARY_AUTO
public static final int LIBRARY_AUTOEnum value used forselectLoggerLibrary(int)
; indicates auto-selection as described in the class documentation ofLogger()
.- See Also:
- Constant Field Values
-
LIBRARY_NAME_AUTO
"org.freemarker.loggerLibrary" property value; indicates auto-selection as described in the class documentation ofLogger()
. @since 2.3.22- See Also:
- Constant Field Values
-
LIBRARY_NONE
public static final int LIBRARY_NONEEnum value used forselectLoggerLibrary(int)
; indicates that no logging should occur.- See Also:
- Constant Field Values
-
LIBRARY_NAME_NONE
"org.freemarker.loggerLibrary" property value; indicates that no logging should occur. @since 2.3.22- See Also:
- Constant Field Values
-
LIBRARY_JAVA
public static final int LIBRARY_JAVAEnum value used forselectLoggerLibrary(int)
; indicates thatjava.util.logging
should be used.- See Also:
- Constant Field Values
-
LIBRARY_NAME_JUL
"org.freemarker.loggerLibrary" property value; indicates thatjava.util.logging
should be used. @since 2.3.22- See Also:
- Constant Field Values
-
LIBRARY_AVALON
Deprecated.Avalon LogKit support will be removed sometimes in the future.Enum value used forselectLoggerLibrary(int)
; indicates that Avalon LogKit should be used.- See Also:
- Constant Field Values
-
LIBRARY_NAME_AVALON
Deprecated.Avalon LogKit support will be removed sometimes in the future."org.freemarker.loggerLibrary" property value; indicates that Avalon LogKit should be used. @since 2.3.22- See Also:
- Constant Field Values
-
LIBRARY_LOG4J
public static final int LIBRARY_LOG4JEnum value used forselectLoggerLibrary(int)
; indicates that Log4J should be used.- See Also:
- Constant Field Values
-
LIBRARY_NAME_LOG4J
"org.freemarker.loggerLibrary" property value; indicates that Log4J should be used. @since 2.3.22- See Also:
- Constant Field Values
-
LIBRARY_COMMONS
public static final int LIBRARY_COMMONSEnum value used forselectLoggerLibrary(int)
; indicates that Apache commons-logging should be used.- See Also:
- Constant Field Values
-
LIBRARY_NAME_COMMONS_LOGGING
"org.freemarker.loggerLibrary" property value; indicates that Apache commons-logging should be used. @since 2.3.22- See Also:
- Constant Field Values
-
LIBRARY_SLF4J
public static final int LIBRARY_SLF4JConstant used withselectLoggerLibrary(int)
; indicates that SLF4J should be used.- See Also:
- Constant Field Values
-
LIBRARY_NAME_SLF4J
"org.freemarker.loggerLibrary" property value; indicates that SLF4J should be used. @since 2.3.22- See Also:
- Constant Field Values
-
-
Constructor Details
-
Logger
public Logger()
-
-
Method Details
-
selectLoggerLibrary
Deprecated.This method isn't reliable, unless you can somehow ensure that you access the FreeMarker classes first; use the "org.freemarker.loggerLibrary" Java system property instead, likejava ... -Dorg.freemarker.loggerLibrary=slf4j
. SeeSYSTEM_PROPERTY_NAME_LOGGER_LIBRARY
for more.Selects the logger library to use, unless it's already specified by the "org.freemarker.loggerLibrary" system property. Call this early in application initialization phase, before calling any other FreeMarker API-s, since once parts of the FreeMarker library bind to the logging subsystem, the change in this value will have no effect on them.- Parameters:
libraryEnum
- One ofLIBRARY_...
constants. By default,LIBRARY_AUTO
is used.- Throws:
ClassNotFoundException
- if an explicit logging library is asked for (that is, not -1 or 0) and it's not found in the classpath.
-
setCategoryPrefix
Deprecated.This wasn't reliable, unless you can somehow ensure that you access the FreeMarker classes first. As it's not known to be useful for users, consider it removed.Sets a category prefix. This prefix is prepended to any logger category name. This makes it possible to have different FreeMarker logger categories on a per-application basis (better said, per-classloader basis). By default the category prefix is the empty string. If you set a non-empty category prefix, be sure to include the trailing separator dot (i.e. "MyApp.") If you want to change the default setting, do it early in application initialization phase, before calling any other FreeMarker API since once various parts of the FreeMarker library bind to the logging subsystem, the change in this value will have no effect on them. -
debug
Logs a debugging message. -
debug
Logs a debugging message with accompanying throwable. -
info
Logs an informational message. -
info
Logs an informational message with accompanying throwable. -
warn
Logs a warning message. -
warn
Logs a warning message with accompanying throwable. -
error
Logs an error message. -
error
Logs an error message with accompanying throwable. -
isDebugEnabled
public abstract boolean isDebugEnabled()Returns true if this logger will log debug messages. -
isInfoEnabled
public abstract boolean isInfoEnabled()Returns true if this logger will log informational messages. -
isWarnEnabled
public abstract boolean isWarnEnabled()Returns true if this logger will log warning messages. -
isErrorEnabled
public abstract boolean isErrorEnabled()Returns true if this logger will log error messages. -
isFatalEnabled
public abstract boolean isFatalEnabled()Returns true if this logger will log fatal error messages. -
getLogger
Returns a logger for the specified category.- Parameters:
category
- a dot separated hierarchical category name. If a category prefix is in effect, it's prepended to the category name.
-