Additional logger names to configure (root logger is always configured)
January 15, 2026 ยท View on GitHub
= JBoss Log Manager
The JBoss Log Manager is an extension of Java Util Logging (JUL). To use the log manager you must set the
java.util.logging.manager system property to org.jboss.logmanager.LogManager.
== Usage
To use the project you must set the java.util.logging.manager system property to org.jboss.logmanager.LogManager
and include the library on your class path.
=== Maven [source,xml]
=== Logging Configuration
==== logging.properties Configuration File
-
Logger options ** loggers=
[, ,...] - Specify a comma-separated list of logger categories which will be configured. Any categories not listed here will not be configured from the following properties. ** logger. .level= - Specify the level for a category. The level can be one of the valid <<log-levels,levels>>. If unspecified, the nearest parent's level will be inherited. ** logger. .handlers= [, ,...] - Specify a comma-separated list of the handler names to attach to this logger. The handlers must be configured in the same properties file. ** logger. .filter= - Specify a filter for a category. See the <<filter-expressions, filter expressions>> for details on defining a filter. ** logger. .useParentHandlers=(true|false) - Specify whether log messages should cascade up to parent handlers. The default value is true. -
Handler options ** handler.
= - [red]#(Required)# Specify the class name of the handler to instantiate. ** handler. .module= - Specify the module name where the handler to instantiate is located. ** handler. .level= - Restrict the level of this handler. If unspecified, the default value of ALL is retained. ** handler. .encoding= - Specify the character encoding, if it is supported by this handler type. If not specified, a handler-specific default is used. ** handler. .errorManager= - Specify the name of the error manager to use. The error manager must be configured in the same properties file. If unspecified, no error manager is configured. ** handler. .filter= - Specify a filter for a category. See the <<filter-expressions, filter expressions>> for details on defining a filter. ** handler. .formatter= - Specify the name of the formatter to use, if it is supported by this handler type. The formatter must be configured in the same properties file. If not specified, messages will not be logged for most handler types. ** handler. .properties= [, ,...] - Specify a list of JavaBean-style properties to additionally configure. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** handler. .constructorProperties= [, ,...] - Specify a list of properties that should be used as construction parameters. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** handler. . = - Set the value of the named property. A POJO name can also be used as a value to use the instance of the <<pojo, POJO>> for the value of the property. -
Error manager options ** errorManager.
= - [red]#(Required)# Specify the class name of the error manager to instantiate. ** errorManager. .module= - Specify the module name where the error manager to instantiate is located. ** errorManager. .properties= [, ,...] - Specify a list of JavaBean-style properties to additionally configure. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** errorManager. .constructorProperties= [, ,...] - Specify a list of properties that should be used as construction parameters. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** errorManager. . = - Set the value of the named property. A POJO name can also be used as a value to use the instance of the <<pojo, POJO>> for the value of the property. -
Formatter options ** formatter.
= - [red]#(Required)# Specify the class name of the formatter to instantiate. ** formatter. .module= - Specify the module name where the formatter to instantiate is located. ** formatter. .properties= [, ,...] - Specify a list of JavaBean-style properties to additionally configure. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** formatter. .constructorProperties= [, ,...] - Specify a list of properties that should be used as construction parameters. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** formatter. . = - Set the value of the named property. A POJO name can also be used as a value to use the instance of the <<pojo, POJO>> for the value of the property. -
[[pojo]]POJO options ** pojo.
= - [red]#(Required)# Specify the class name of the POJO to instantiate. ** pojo. .module= - Specify the module name where the POJO to instantiate is located. ** pojo. .properties= [, ,...] - Specify a list of JavaBean-style properties to additionally configure. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** pojo. .constructorProperties= [, ,...] - Specify a list of properties that should be used as construction parameters. A rudimentary type introspection is done to ascertain the appropriate conversion for the given property. ** pojo. . = - Set the value of the named property. A POJO name can also be used as a value to use the instance of the <<pojo, POJO>> for the value of the property.
==== [[log-levels]] Log Levels
ALLFATALSEVEREERRORWARNINGWARNINFOCONFIGFINEDEBUGFINERTRACEFINESTOFF
==== [[filter-expressions]] Filter Expressions
[options="header"]
|====
| Filter Type | Expression | Description | Parameter(s)
| accept | accept | Accepts all log messages. | None
| deny | deny | Denies all log messages. | None
| not | not(filterExpression) | Accepts a filter as an argument and inverts the returned value. | The expression takes a single filter for its argument.
| all | all(filterExpressions) | A filter consisting of several filters in a chain. If any filter find the log message to be unloggable, the message will not be logged and subsequent filters will not be checked. | The expression takes a comma-delimited list of filters for its argument.
| any | any(filterExpressions) | A filter consisting of several filters in a chain. If any filter fins the log message to be loggable, the message will be logged and the subsequent filters will not be checked. | The expression takes a comma-delimited list of filters for its argument.
| levelChange | levelChange(level) | A filter which modifies the log record with a new level. | The expression takes a single string based level for its argument.
| levels | levels(levels) | A filter which includes log messages with a level that is listed in the list of levels. | The expression takes a comma-delimited list of string based levels for its argument.
| levelRange | levelRange([minLevel,maxLevel]) | A filter which logs records that are within the level range. | The filter expression uses a "[" to indicate a minimum inclusive level and a "]" to indicate a maximum inclusive level. Otherwise, use "(" or ")" respectively indicate exclusive. The first argument for the expression is the minimum level allowed, the second argument is the maximum level allowed.
| match | match("pattern") | A regular-expression based filter. The raw unformatted message is used against the pattern. | The expression takes a regular expression for its argument.| substitute |substitute("pattern", "replacement value")| A filter which replaces the first match to the pattern with the replacement value. | The first argument for the expression is the pattern the second argument is the replacement text. | substituteAll |substituteAll("pattern", "replacement value")` | A filter which replaces all matches of the pattern with the replacement value. | The first argument for the expression is the pattern the second argument is the replacement text.
|====
==== Example configuration
This is an example logging.properties that you can use to get started.
Additional logger names to configure (root logger is always configured)
loggers=org.foo.bar,org.foo.baz
Root logger level
logger.level=DEBUG
Declare handlers for the root logger
logger.handlers=CONSOLE,FILE
Declare handlers for additional loggers
logger.org.foo.bar.handlers=FILE logger.org.foo.bar.useParentHandlers=false
Console handler configuration
handler.CONSOLE=org.jboss.logmanager.handlers.ConsoleHandler handler.CONSOLE.properties=autoFlush handler.CONSOLE.level=INFO handler.CONSOLE.autoFlush=true handler.CONSOLE.formatter=PATTERN
File handler configuration
handler.FILE=org.jboss.logmanager.handlers.FileHandler handler.FILE.level=DEBUG handler.FILE.properties=autoFlush,fileName handler.FILE.autoFlush=true handler.FILE.fileName=${jboss.server.log.dir}/project.log handler.FILE.formatter=PATTERN
The log format pattern for both logs
formatter.PATTERN=org.jboss.logmanager.formatters.PatternFormatter formatter.PATTERN.properties=pattern formatter.PATTERN.pattern=%d{HH:mm:ss,SSS} %-5p [%c{1}] %m%n
== Contributing
See the link:CONTRIBUTING.adoc[contributing guide].
== Releasing
Releasing the project requires permission to deploy to Maven Central see https://central.sonatype.org/publish/requirements/[Maven Central Release Requirements].
Once everything is setup, you simply need to run the ./release.sh script. There are two required parameters:
-ror--releasewhich is the version you want to release-dor--developmentwhich is the next development version.
By default, the release version cannot contain SNAPSHOT and the development version, must contain SNAPSHOT.
[source,bash] .Example Command
./release.sh -r 1.0.0.Final -d 1.0.1.Final-SNAPSHOT
=== Supported Arguments
|=== |Argument | Requires Value | Description
| -d, --development
| Yes
| The next version for the development cycle.
| -f, --force
| No
| Forces to allow a SNAPSHOT suffix in release version and not require one for the development version.
| -h, --help
| N/A
| Displays this help
| --notes-start-tag
| Unused
| Passes the --notes-from-tag and the argument to the gh create release command.
| -p, --prerelease
| Unused
| Passes the --prerelease to the gh create release command.
| -r, --release
| Yes
| The version to be released. Also used for the tag.
| --dry-run
| No
| Executes the release in as a dry-run. Nothing will be updated or pushed.
| -v, --verbose
| No
| Prints verbose output.
|===
Any additional arguments are considered arguments for the Maven command.