Package org.jvnet.hudson.test
Class LoggerRule
java.lang.Object
org.junit.rules.ExternalResource
org.jvnet.hudson.test.LoggerRule
- All Implemented Interfaces:
org.junit.rules.TestRule
public class LoggerRule
extends org.junit.rules.ExternalResource
A test rule which allows you to easily enable one or more loggers for the duration of a test.
Call
record(Class, Level)
or another overload for the rule to take effect.
By default messages are merely printed to test output.
If you also want to examine them, call capture(int)
.
To print and/or capture messages during Jenkins startup,
you may compose this with a JenkinsRule
using a RuleChain
;
or use as a ClassRule
.
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
after()
capture
(int maximum) Initializes log record capture, in addition to merely printing it.Returns a read-only view of current messages.Obtains all log records collected so far during this test case.quiet()
Don't emit logs to the console, only record.Same asrecord(String, Level)
but callsClass.getName()
for you first.Same asrecord(Logger, Level)
but callsLogger.getLogger(String)
for you first.Start listening to a logger.static org.hamcrest.Matcher<LoggerRule>
Creates aMatcher
that matches if theLoggerRule
has aLogRecord
at the specifiedLevel
and with a message matching the specified matcher.static org.hamcrest.Matcher<LoggerRule>
Creates aMatcher
that matches if theLoggerRule
has aLogRecord
at the specifiedLevel
, with a message matching the specified matcher, and with aThrowable
matching the specified matcher.static org.hamcrest.Matcher<LoggerRule>
Creates aMatcher
that matches if theLoggerRule
has aLogRecord
with a message matching the specified matcher.static org.hamcrest.Matcher<LoggerRule>
Creates aMatcher
that matches if theLoggerRule
has aLogRecord
with a message matching the specified matcher and with aThrowable
matching the specified matcher.recordPackage
(Class<?> clazz, Level level) Same asrecord(String, Level)
but callsClass.getPackage()
and getName() for you first.toString()
Methods inherited from class org.junit.rules.ExternalResource
apply, before
-
Constructor Details
-
LoggerRule
public LoggerRule()Initializes the rule, by default not recording anything.
-
-
Method Details
-
quiet
Don't emit logs to the console, only record. -
toString
-
capture
Initializes log record capture, in addition to merely printing it. This allows you to callgetRecords()
and/orgetMessages()
later.- Parameters:
maximum
- the maximum number of records to keep (any further will be discarded)- Returns:
- this rule, for convenience
-
record
Start listening to a logger. Might be called in aRule
initializer, to apply to all test cases in a suite; or only at the start of selected test cases.- Parameters:
logger
- some loggerlevel
- something betweenLevel.CONFIG
andLevel.ALL
; usingLevel.INFO
or above is typically senseless, since Java will by default log everything at such levels anyway; unless you wish to inspect visiblegetRecords()
, or wish to suppress console log output for some logger- Returns:
- this rule, for convenience
-
record
Same asrecord(Logger, Level)
but callsLogger.getLogger(String)
for you first. -
record
Same asrecord(String, Level)
but callsClass.getName()
for you first. -
recordPackage
Same asrecord(String, Level)
but callsClass.getPackage()
and getName() for you first. -
getRecords
Obtains all log records collected so far during this test case. You must have first calledcapture(int)
. If more than the maximum number of records were captured, older ones will have been discarded. -
getMessages
Returns a read-only view of current messages.Formatter.formatMessage(java.util.logging.LogRecord)
applied togetRecords()
at the time of logging. However, if the message is null, but there is an exception,Throwable.toString()
will be used. Does not include logger names, stack traces, times, etc. (these will appear in the test console anyway). -
after
protected void after()- Overrides:
after
in classorg.junit.rules.ExternalResource
-
recorded
public static org.hamcrest.Matcher<LoggerRule> recorded(@CheckForNull Level level, @NonNull org.hamcrest.Matcher<String> message, @CheckForNull org.hamcrest.Matcher<Throwable> thrown) Creates aMatcher
that matches if theLoggerRule
has aLogRecord
at the specifiedLevel
, with a message matching the specified matcher, and with aThrowable
matching the specified matcher. You must have first calledcapture(int)
.- Parameters:
level
- TheLevel
of theLoggerRule
to match. Passnull
to match anyLevel
.message
- the matcher to match againstLogRecord.getMessage()
thrown
- the matcher to match againstLogRecord.getThrown()
. Passingnull
is equivalent to passingMatchers.anything()
-
recorded
public static org.hamcrest.Matcher<LoggerRule> recorded(@CheckForNull Level level, @NonNull org.hamcrest.Matcher<String> message) Creates aMatcher
that matches if theLoggerRule
has aLogRecord
at the specifiedLevel
and with a message matching the specified matcher. You must have first calledcapture(int)
.- Parameters:
level
- TheLevel
of theLoggerRule
to match. Passnull
to match anyLevel
.message
- The matcher to match againstLogRecord.getMessage()
.
-
recorded
public static org.hamcrest.Matcher<LoggerRule> recorded(@NonNull org.hamcrest.Matcher<String> message, @CheckForNull org.hamcrest.Matcher<Throwable> thrown) Creates aMatcher
that matches if theLoggerRule
has aLogRecord
with a message matching the specified matcher and with aThrowable
matching the specified matcher. You must have first calledcapture(int)
.- Parameters:
message
- the matcher to match againstLogRecord.getMessage()
thrown
- the matcher to match againstLogRecord.getThrown()
. Passingnull
is equivalent to passingMatchers.anything()
-
recorded
public static org.hamcrest.Matcher<LoggerRule> recorded(@NonNull org.hamcrest.Matcher<String> message) Creates aMatcher
that matches if theLoggerRule
has aLogRecord
with a message matching the specified matcher. You must have first calledcapture(int)
.- Parameters:
message
- the matcher to match againstLogRecord.getMessage()
-