|
@@ -35,6 +35,7 @@ import password.pwm.svc.event.AuditRecord;
|
|
import password.pwm.svc.event.AuditRecordFactory;
|
|
import password.pwm.svc.event.AuditRecordFactory;
|
|
import password.pwm.util.java.JavaHelper;
|
|
import password.pwm.util.java.JavaHelper;
|
|
import password.pwm.util.java.JsonUtil;
|
|
import password.pwm.util.java.JsonUtil;
|
|
|
|
+import password.pwm.util.java.TimeDuration;
|
|
|
|
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.time.Instant;
|
|
import java.time.Instant;
|
|
@@ -117,7 +118,12 @@ public class PwmLogger
|
|
return name;
|
|
return name;
|
|
}
|
|
}
|
|
|
|
|
|
- private void doPwmRequestLogEvent( final PwmLogLevel level, final PwmRequest pwmRequest, final Supplier<CharSequence> message, final Throwable e )
|
|
|
|
|
|
+ private void doPwmRequestLogEvent(
|
|
|
|
+ final PwmLogLevel level,
|
|
|
|
+ final PwmRequest pwmRequest,
|
|
|
|
+ final Supplier<CharSequence> message,
|
|
|
|
+ final Throwable e,
|
|
|
|
+ final Supplier<TimeDuration> timeDuration )
|
|
{
|
|
{
|
|
if ( !isEnabled( level ) )
|
|
if ( !isEnabled( level ) )
|
|
{
|
|
{
|
|
@@ -141,15 +147,26 @@ public class PwmLogger
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- doLogEvent( level, sessionLabel, cleanedMessage, e );
|
|
|
|
|
|
+ doLogEvent( level, sessionLabel, cleanedMessage, e, timeDuration );
|
|
}
|
|
}
|
|
|
|
|
|
- private void doLogEvent( final PwmLogLevel level, final SessionLabel sessionLabel, final CharSequence message, final Throwable e )
|
|
|
|
|
|
+ private void doLogEvent(
|
|
|
|
+ final PwmLogLevel level,
|
|
|
|
+ final SessionLabel sessionLabel,
|
|
|
|
+ final Supplier<CharSequence> message,
|
|
|
|
+ final Throwable e
|
|
|
|
+ )
|
|
{
|
|
{
|
|
- doLogEvent( level, sessionLabel, () -> message == null ? "" : message, e );
|
|
|
|
|
|
+ doLogEvent( level, sessionLabel, message, e, null );
|
|
}
|
|
}
|
|
|
|
|
|
- private void doLogEvent( final PwmLogLevel level, final SessionLabel sessionLabel, final Supplier<CharSequence> message, final Throwable e )
|
|
|
|
|
|
+ private void doLogEvent(
|
|
|
|
+ final PwmLogLevel level,
|
|
|
|
+ final SessionLabel sessionLabel,
|
|
|
|
+ final Supplier<CharSequence> message,
|
|
|
|
+ final Throwable e,
|
|
|
|
+ final Supplier<TimeDuration> timeDuration
|
|
|
|
+ )
|
|
{
|
|
{
|
|
if ( !isEnabled( level ) )
|
|
if ( !isEnabled( level ) )
|
|
{
|
|
{
|
|
@@ -158,12 +175,26 @@ public class PwmLogger
|
|
|
|
|
|
final PwmLogLevel effectiveLevel = level == null ? PwmLogLevel.TRACE : level;
|
|
final PwmLogLevel effectiveLevel = level == null ? PwmLogLevel.TRACE : level;
|
|
final String topic = log4jLogger.getName();
|
|
final String topic = log4jLogger.getName();
|
|
- final CharSequence effectiveMessage = message == null ? "" : message.get();
|
|
|
|
|
|
+ final CharSequence effectiveMessage = formatEffectiveMessage( message, timeDuration );
|
|
final PwmLogEvent logEvent = PwmLogEvent.createPwmLogEvent( Instant.now(), topic, effectiveMessage.toString(), sessionLabel,
|
|
final PwmLogEvent logEvent = PwmLogEvent.createPwmLogEvent( Instant.now(), topic, effectiveMessage.toString(), sessionLabel,
|
|
e, effectiveLevel );
|
|
e, effectiveLevel );
|
|
doLogEvent( logEvent );
|
|
doLogEvent( logEvent );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private CharSequence formatEffectiveMessage( final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ final CharSequence output = message == null
|
|
|
|
+ ? ""
|
|
|
|
+ : message.get();
|
|
|
|
+
|
|
|
|
+ if ( timeDuration != null )
|
|
|
|
+ {
|
|
|
|
+ return output + " (" + timeDuration.get().asCompactString() + ")";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return output;
|
|
|
|
+ }
|
|
|
|
+
|
|
private void doLogEvent( final PwmLogEvent logEvent )
|
|
private void doLogEvent( final PwmLogEvent logEvent )
|
|
{
|
|
{
|
|
pushMessageToLog4j( logEvent );
|
|
pushMessageToLog4j( logEvent );
|
|
@@ -244,14 +275,9 @@ public class PwmLogger
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- private static String convertErrorInformation( final ErrorInformation info )
|
|
|
|
- {
|
|
|
|
- return info.toDebugStr();
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- public void log( final PwmLogLevel level, final SessionLabel sessionLabel, final CharSequence message )
|
|
|
|
|
|
+ private static Supplier<CharSequence> convertErrorInformation( final ErrorInformation info )
|
|
{
|
|
{
|
|
- doLogEvent( level, sessionLabel, message, null );
|
|
|
|
|
|
+ return info::toDebugStr;
|
|
}
|
|
}
|
|
|
|
|
|
public void log( final PwmLogLevel level, final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
public void log( final PwmLogLevel level, final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
@@ -264,9 +290,19 @@ public class PwmLogger
|
|
doLogEvent( PwmLogLevel.TRACE, null, message, null );
|
|
doLogEvent( PwmLogLevel.TRACE, null, message, null );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void trace( final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doLogEvent( PwmLogLevel.TRACE, null, message, null, timeDuration );
|
|
|
|
+ }
|
|
|
|
+
|
|
public void trace( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
public void trace( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.TRACE, pwmRequest, message, null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.TRACE, pwmRequest, message, null, null );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void trace( final PwmRequest pwmRequest, final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.TRACE, pwmRequest, message, null, timeDuration );
|
|
}
|
|
}
|
|
|
|
|
|
public void trace( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
public void trace( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
@@ -274,6 +310,11 @@ public class PwmLogger
|
|
doLogEvent( PwmLogLevel.TRACE, sessionLabel, message, null );
|
|
doLogEvent( PwmLogLevel.TRACE, sessionLabel, message, null );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void trace( final SessionLabel sessionLabel, final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doLogEvent( PwmLogLevel.TRACE, sessionLabel, message, null, timeDuration );
|
|
|
|
+ }
|
|
|
|
+
|
|
public void trace( final Supplier<CharSequence> message, final Throwable exception )
|
|
public void trace( final Supplier<CharSequence> message, final Throwable exception )
|
|
{
|
|
{
|
|
doLogEvent( PwmLogLevel.TRACE, null, message, exception );
|
|
doLogEvent( PwmLogLevel.TRACE, null, message, exception );
|
|
@@ -284,14 +325,19 @@ public class PwmLogger
|
|
doLogEvent( PwmLogLevel.DEBUG, null, message, null );
|
|
doLogEvent( PwmLogLevel.DEBUG, null, message, null );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void debug( final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doLogEvent( PwmLogLevel.DEBUG, null, message, null, timeDuration );
|
|
|
|
+ }
|
|
|
|
+
|
|
public void debug( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
public void debug( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.DEBUG, pwmRequest, message, null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.DEBUG, pwmRequest, message, null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void debug( final PwmRequest pwmRequest, final ErrorInformation errorInformation )
|
|
public void debug( final PwmRequest pwmRequest, final ErrorInformation errorInformation )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.DEBUG, pwmRequest, () -> convertErrorInformation( errorInformation ), null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.DEBUG, pwmRequest, convertErrorInformation( errorInformation ), null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void debug( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
public void debug( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
@@ -299,6 +345,11 @@ public class PwmLogger
|
|
doLogEvent( PwmLogLevel.DEBUG, sessionLabel, message, null );
|
|
doLogEvent( PwmLogLevel.DEBUG, sessionLabel, message, null );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void debug( final SessionLabel sessionLabel, final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doLogEvent( PwmLogLevel.DEBUG, sessionLabel, message, null, timeDuration );
|
|
|
|
+ }
|
|
|
|
+
|
|
public void debug( final SessionLabel sessionLabel, final ErrorInformation errorInformation )
|
|
public void debug( final SessionLabel sessionLabel, final ErrorInformation errorInformation )
|
|
{
|
|
{
|
|
doLogEvent( PwmLogLevel.DEBUG, sessionLabel, convertErrorInformation( errorInformation ), null );
|
|
doLogEvent( PwmLogLevel.DEBUG, sessionLabel, convertErrorInformation( errorInformation ), null );
|
|
@@ -306,7 +357,7 @@ public class PwmLogger
|
|
|
|
|
|
public void debug( final Supplier<CharSequence> message, final Throwable exception )
|
|
public void debug( final Supplier<CharSequence> message, final Throwable exception )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.DEBUG, null, message, exception );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.DEBUG, null, message, exception, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void info( final Supplier<CharSequence> message )
|
|
public void info( final Supplier<CharSequence> message )
|
|
@@ -314,14 +365,19 @@ public class PwmLogger
|
|
doLogEvent( PwmLogLevel.INFO, null, message, null );
|
|
doLogEvent( PwmLogLevel.INFO, null, message, null );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void info( final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doLogEvent( PwmLogLevel.INFO, null, message, null, timeDuration );
|
|
|
|
+ }
|
|
|
|
+
|
|
public void info( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
public void info( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.INFO, pwmRequest, message, null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.INFO, pwmRequest, message, null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void info( final PwmRequest pwmRequest, final ErrorInformation errorInformation )
|
|
public void info( final PwmRequest pwmRequest, final ErrorInformation errorInformation )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.INFO, pwmRequest, () -> convertErrorInformation( errorInformation ), null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.INFO, pwmRequest, convertErrorInformation( errorInformation ), null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void info( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
public void info( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
@@ -329,6 +385,11 @@ public class PwmLogger
|
|
doLogEvent( PwmLogLevel.INFO, sessionLabel, message, null );
|
|
doLogEvent( PwmLogLevel.INFO, sessionLabel, message, null );
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public void info( final SessionLabel sessionLabel, final Supplier<CharSequence> message, final Supplier<TimeDuration> timeDuration )
|
|
|
|
+ {
|
|
|
|
+ doLogEvent( PwmLogLevel.INFO, sessionLabel, message, null, timeDuration );
|
|
|
|
+ }
|
|
|
|
+
|
|
public void info( final Supplier<CharSequence> message, final Throwable exception )
|
|
public void info( final Supplier<CharSequence> message, final Throwable exception )
|
|
{
|
|
{
|
|
doLogEvent( PwmLogLevel.INFO, null, message, exception );
|
|
doLogEvent( PwmLogLevel.INFO, null, message, exception );
|
|
@@ -341,22 +402,22 @@ public class PwmLogger
|
|
|
|
|
|
public void error( final PwmRequest pwmRequest, final Supplier<CharSequence> message, final Throwable exception )
|
|
public void error( final PwmRequest pwmRequest, final Supplier<CharSequence> message, final Throwable exception )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.ERROR, pwmRequest, message, exception );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.ERROR, pwmRequest, message, exception, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void error( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
public void error( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.ERROR, pwmRequest, message, null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.ERROR, pwmRequest, message, null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void error( final PwmRequest pwmRequest, final ErrorInformation errorInformation )
|
|
public void error( final PwmRequest pwmRequest, final ErrorInformation errorInformation )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.ERROR, pwmRequest, () -> convertErrorInformation( errorInformation ), null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.ERROR, pwmRequest, convertErrorInformation( errorInformation ), null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void error( final ErrorInformation errorInformation )
|
|
public void error( final ErrorInformation errorInformation )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.ERROR, null, () -> convertErrorInformation( errorInformation ), null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.ERROR, null, convertErrorInformation( errorInformation ), null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void error( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
public void error( final SessionLabel sessionLabel, final Supplier<CharSequence> message )
|
|
@@ -391,12 +452,12 @@ public class PwmLogger
|
|
|
|
|
|
public void warn( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
public void warn( final PwmRequest pwmRequest, final Supplier<CharSequence> message )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.WARN, pwmRequest, message, null );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.WARN, pwmRequest, message, null, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void warn( final PwmRequest pwmRequest, final Supplier<CharSequence> message, final Throwable exception )
|
|
public void warn( final PwmRequest pwmRequest, final Supplier<CharSequence> message, final Throwable exception )
|
|
{
|
|
{
|
|
- doPwmRequestLogEvent( PwmLogLevel.WARN, pwmRequest, message, exception );
|
|
|
|
|
|
+ doPwmRequestLogEvent( PwmLogLevel.WARN, pwmRequest, message, exception, null );
|
|
}
|
|
}
|
|
|
|
|
|
public void warn( final SessionLabel sessionLabel, final ErrorInformation errorInformation, final Throwable exception )
|
|
public void warn( final SessionLabel sessionLabel, final ErrorInformation errorInformation, final Throwable exception )
|
|
@@ -488,7 +549,7 @@ public class PwmLogger
|
|
{
|
|
{
|
|
final String line = buffer.substring( 0, length );
|
|
final String line = buffer.substring( 0, length );
|
|
buffer.delete( 0, +length + 1 );
|
|
buffer.delete( 0, +length + 1 );
|
|
- doLogEvent( logLevel, sessionLabel, line, null );
|
|
|
|
|
|
+ doLogEvent( logLevel, sessionLabel, () -> line, null );
|
|
length = buffer.indexOf( "\n" );
|
|
length = buffer.indexOf( "\n" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -517,18 +578,6 @@ public class PwmLogger
|
|
|
|
|
|
public boolean isEnabled( final PwmLogLevel pwmLogLevel )
|
|
public boolean isEnabled( final PwmLogLevel pwmLogLevel )
|
|
{
|
|
{
|
|
- /*
|
|
|
|
- if ( minimumDbLogLevel != null )
|
|
|
|
- {
|
|
|
|
- final int compareValue = minimumDbLogLevel.compareTo( pwmLogLevel );
|
|
|
|
- final boolean dbLogLevelHigher = compareValue <= 0;
|
|
|
|
- System.out.println( " dbLogLevelHigher=" + dbLogLevelHigher
|
|
|
|
- + ", compareValue=" + compareValue
|
|
|
|
- + " pwmLogLevel=" + pwmLogLevel
|
|
|
|
- + ", minDbLevel=" + minimumDbLogLevel );
|
|
|
|
- }
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
return (
|
|
return (
|
|
log4jLogger != null
|
|
log4jLogger != null
|
|
&& log4jLogger.isEnabledFor( pwmLogLevel.getLog4jLevel() )
|
|
&& log4jLogger.isEnabledFor( pwmLogLevel.getLog4jLevel() )
|