Class WriteAuditLog
-
- All Implemented Interfaces:
Component,DestructableComponent,InitializableComponent,ProfileAction,Aware,MessageSource,MessageSourceAware,Action
public class WriteAuditLog extends AbstractProfileAction
Action that produces audit log entries based on anAuditContextand one or more formatting strings.- Event:
EventIds.PROCEED_EVENT_ID
-
-
Field Summary
Fields Modifier and Type Field Description private Function<ProfileRequestContext,AuditContext>auditContextLookupStrategyStrategy used to locate theAuditContextassociated with a givenProfileRequestContext.private AuditContextauditCtxThe AuditContext to operate on.private Collection<String>categoriesToLogExplicit categories to log fromformattingMapprivate DateTimeFormatterdateTimeFormatterFormatter for date/time fields.private Map<String,List<String>>formattingMapMap of log category to formatting tokens and literals to output.private booleanincludeProfileLoggingIdprivate org.slf4j.LoggerlogClass logger.private RequestContextrequestContextThe Spring RequestContext to operate on.private booleanuseDefaultTimeZoneConvert date/time fields to default time zone.
-
Constructor Summary
Constructors Constructor Description WriteAuditLog()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voiddoExecute(ProfileRequestContext profileRequestContext)protected EventdoExecute(RequestContext springRequestContext, ProfileRequestContext profileRequestContext)Spring-aware actions can override this method to fully control the execution of an Action by the Web Flow engine.protected voiddoInitialize()protected booleandoPreExecute(ProfileRequestContext profileRequestContext)protected voidfilter(StringBuilder entry)Optional override to filter the outgoing log message, does nothing by default.Map<String,List<String>>getFormattingMap()Get the map of logging category to formatting tokens for log entries.voidsetAuditContextLookupStrategy(Function<ProfileRequestContext,AuditContext> strategy)Set the strategy used to locate theAuditContextassociated with a givenProfileRequestContext.voidsetCategoriesToLog(Collection<String> categories)Set categories to log explicitly.voidsetDateTimeFormat(String format)Set the formatting string to apply when extracting date/time fields.voidsetFormattingMap(Map<String,String> map)Set the map of logging category to formatting strings for log entries.voidsetIncludeProfileLoggingId(boolean flag)Sets whether to suffix the profile's logging ID to the category to log against.voidsetUseDefaultTimeZone(boolean flag)Convert date/time fields to default time zone.-
Methods inherited from class net.shibboleth.idp.profile.AbstractProfileAction
execute, getBean, getBean, getMessage, getMessage, getMessage, getParameter, getParameter, getProfileContextLookupStrategy, getRequestContext, getResult, setMessageSource, setProfileContextLookupStrategy
-
Methods inherited from class org.opensaml.profile.action.AbstractConditionalProfileAction
getActivationCondition, setActivationCondition
-
Methods inherited from class org.opensaml.profile.action.AbstractProfileAction
doPostExecute, doPostExecute, execute, getHttpServletRequest, getHttpServletRequestSupplier, getHttpServletResponse, getHttpServletResponseSupplier, getLogPrefix, setHttpServletRequest, setHttpServletRequestSupplier, setHttpServletResponse, setHttpServletResponseSupplier
-
Methods inherited from class net.shibboleth.utilities.java.support.component.AbstractInitializableComponent
destroy, doDestroy, initialize, isDestroyed, isInitialized
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface net.shibboleth.utilities.java.support.component.InitializableComponent
initialize, isInitialized
-
-
-
-
Field Detail
-
log
@Nonnull private final org.slf4j.Logger log
Class logger.
-
auditContextLookupStrategy
@Nonnull private Function<ProfileRequestContext,AuditContext> auditContextLookupStrategy
Strategy used to locate theAuditContextassociated with a givenProfileRequestContext.
-
formattingMap
@Nonnull @NotEmpty private Map<String,List<String>> formattingMap
Map of log category to formatting tokens and literals to output.
-
categoriesToLog
@Nonnull @NotEmpty private Collection<String> categoriesToLog
Explicit categories to log fromformattingMap
-
dateTimeFormatter
@Nonnull private DateTimeFormatter dateTimeFormatter
Formatter for date/time fields.
-
useDefaultTimeZone
private boolean useDefaultTimeZone
Convert date/time fields to default time zone.
-
includeProfileLoggingId
private boolean includeProfileLoggingId
-
requestContext
@Nullable private RequestContext requestContext
The Spring RequestContext to operate on.
-
auditCtx
@Nullable private AuditContext auditCtx
The AuditContext to operate on.
-
-
Method Detail
-
setAuditContextLookupStrategy
public void setAuditContextLookupStrategy(@Nonnull Function<ProfileRequestContext,AuditContext> strategy)Set the strategy used to locate theAuditContextassociated with a givenProfileRequestContext.- Parameters:
strategy- lookup strategy
-
getFormattingMap
@Nonnull @NonnullElements @NotLive @Unmodifiable public Map<String,List<String>> getFormattingMap()
Get the map of logging category to formatting tokens for log entries.- Returns:
- map of formatting tokens
-
setFormattingMap
public void setFormattingMap(@Nullable @NonnullElements Map<String,String> map)
Set the map of logging category to formatting strings for log entries.A formatting string consists of tokens prefixed by '%' separated by any non-alphanumeric or whitespace. Tokens can contain any letter or number or a hyphen. Anything other than a token, including whitespace, is a literal.
- Parameters:
map- map of categories to formatting strings
-
setCategoriesToLog
public void setCategoriesToLog(@Nullable @NonnullElements Collection<String> categories)
Set categories to log explicitly.In the absence of any, the original behavior that iterates over the whole formatting map and logs each key is retained.
- Parameters:
categories- categories to log- Since:
- 4.3.0
-
setDateTimeFormat
public void setDateTimeFormat(@Nullable @NotEmpty String format)
Set the formatting string to apply when extracting date/time fields.- Parameters:
format- formatting string
-
setUseDefaultTimeZone
public void setUseDefaultTimeZone(boolean flag)
Convert date/time fields to default time zone.- Parameters:
flag- flag to set
-
setIncludeProfileLoggingId
public void setIncludeProfileLoggingId(boolean flag)
Sets whether to suffix the profile's logging ID to the category to log against.Defaults to true.
- Parameters:
flag- flag to set- Since:
- 4.3.0
-
doInitialize
protected void doInitialize() throws ComponentInitializationException- Overrides:
doInitializein classAbstractInitializableComponent- Throws:
ComponentInitializationException
-
doExecute
@Nonnull protected Event doExecute(@Nonnull RequestContext springRequestContext, @Nonnull ProfileRequestContext profileRequestContext)
Spring-aware actions can override this method to fully control the execution of an Action by the Web Flow engine.Alternatively they may override
AbstractProfileAction.doExecute(ProfileRequestContext)and access Spring information via aSpringRequestContextattached to the profile request context.The default implementation attaches the Spring Web Flow request context to the profile request context tree to "narrow" the execution signature to the basic OpenSAML
ProfileActioninterface. After execution, anEventContextis sought, and used to return a result back to the Web Flow engine. If no context exists, a "proceed" event is signaled.- Overrides:
doExecutein classAbstractProfileAction- Parameters:
springRequestContext- the Spring request contextprofileRequestContext- a profile request context- Returns:
- a Web Flow event produced by the action
-
doPreExecute
protected boolean doPreExecute(@Nonnull ProfileRequestContext profileRequestContext)- Overrides:
doPreExecutein classAbstractConditionalProfileAction
-
doExecute
protected void doExecute(@Nonnull ProfileRequestContext profileRequestContext)- Overrides:
doExecutein classAbstractProfileAction
-
filter
protected void filter(@Nonnull StringBuilder entry)Optional override to filter the outgoing log message, does nothing by default.- Parameters:
entry- log entry
-
-