private static void logLong( Logger logger, String message, long value ) { if ( value != OsBeanUtil.VALUE_UNAVAILABLE ) { logger.log( message + value ); } } }
private static void bulk( final LinkedList<Logger> remaining, final ArrayList<Logger> bulkLoggers, final Consumer<Logger> finalConsumer ) { if ( !remaining.isEmpty() ) { Logger logger = remaining.pop(); logger.bulk( bulkLogger -> { bulkLoggers.add( bulkLogger ); bulk( remaining, bulkLoggers, finalConsumer ); } ); } else { Logger logger = new DuplicatingLogger( bulkLoggers ); finalConsumer.accept( logger ); } } }
@Override public void log( @Nonnull String message ) { for ( Logger logger : loggers ) { logger.log( message ); } }
@Override public void log( @Nonnull String message, @Nonnull Throwable throwable ) { for ( Logger logger : loggers ) { logger.log( message, throwable ); } }
private static boolean tryLockBlocking( Lock lock, UpdateLock managingLock, Logger logger ) { try { return lock.tryLock( 1, TimeUnit.HOURS ); } catch ( InterruptedException e ) { logger.log( Thread.currentThread() + " ignoring interrupt while blocked on " + lock + " of " + managingLock ); } return false; }
@Override public void log( @Nonnull String format, @Nonnull Object... arguments ) { for ( Logger logger : loggers ) { logger.log( format, arguments ); } }
private void logDependencyException( KernelContext context, Logger toolLog, Logger dbmsLog, String message ) { // We can for instance get unsatisfied dependency exceptions when the kernel extension is created as part of a consistency check run. if ( context.databaseInfo() == DatabaseInfo.TOOL ) { toolLog.log( message ); } else { // If we are not in a "TOOL" context, then we log this at the "DBMS" level, since it might be important for correctness. dbmsLog.log( message ); } } }
public synchronized boolean logTo( Logger logger ) { logger.log( "Total lock count: readCount=" + totalReadCount + " writeCount=" + totalWriteCount + " for " + resource ); logger.log( "Waiting list:" ); Iterator<LockRequest> wElements = waitingThreadList.iterator(); while ( wElements.hasNext() ) { LockRequest lockRequest = wElements.next(); logger.log( "[" + lockRequest.waitingThread + "(" + lockRequest.element.readCount + "r," + lockRequest.element.writeCount + "w)," + lockRequest.lockType + "]" ); if ( wElements.hasNext() ) { logger.log( "," ); } else { logger.log( "" ); } } logger.log( "Locking transactions:" ); for ( TxLockElement tle : txLockElementMap.values() ) { logger.log( "" + tle.tx + "(" + tle.readCount + "r," + tle.writeCount + "w)" ); } return true; }
@Override void invoke( AsyncLogTest state, Logger logger ) { logger.log( "a message" ); }
@Override public void debug( @Nonnull String message ) { debugLogger().log( message ); }
@Override public void info( @Nonnull String message, @Nonnull Throwable throwable ) { infoLogger().log( message, throwable ); }
@Override public void info( @Nonnull String format, @Nullable Object... arguments ) { infoLogger().log( format, arguments ); }
@Override public void warn( @Nonnull String message, @Nonnull Throwable throwable ) { warnLogger().log( message, throwable ); }
@Override public void error( @Nonnull String message, @Nonnull Throwable throwable ) { errorLogger().log( message, throwable ); }
@Override public void error( @Nonnull String format, @Nullable Object... arguments ) { errorLogger().log( format, arguments ); } }
@Override void invoke( AsyncLogTest state, Logger logger ) { logger.log( "a %s message", "formatted" ); }
@Override void dump( Logger logger ) { RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean(); for ( String path : runtime.getLibraryPath().split( File.pathSeparator ) ) { logger.log( canonicalize( path ) ); } } },
private static void logBytes( Logger logger, String message, long value ) { if ( value != OsBeanUtil.VALUE_UNAVAILABLE ) { logger.log( message + bytes( value ) ); } }
@Override public void debug( @Nonnull String format, @Nullable Object... arguments ) { debugLogger().log( format, arguments ); }