@Nonnull @Override public Logger debugLogger() { return new AsyncLogger( events, log.debugLogger() ); }
@Override Logger logger( Log log ) { return log.debugLogger(); } },
private Logger getLogger( LogRecord record, Log log ) { int level = record.getLevel().intValue(); if ( level <= Level.FINE.intValue() ) { return log.debugLogger(); } else if ( level <= Level.INFO.intValue() ) { return log.infoLogger(); } else if ( level <= Level.WARNING.intValue() ) { return log.warnLogger(); } else { return log.errorLogger(); } }
/** * @param logs A list of {@link Log} instances that messages should be duplicated to */ public DuplicatingLog( List<Log> logs ) { ArrayList<Logger> debugLoggers = new ArrayList<>( logs.size() ); ArrayList<Logger> infoLoggers = new ArrayList<>( logs.size() ); ArrayList<Logger> warnLoggers = new ArrayList<>( logs.size() ); ArrayList<Logger> errorLoggers = new ArrayList<>( logs.size() ); for ( Log log : logs ) { debugLoggers.add( log.debugLogger() ); infoLoggers.add( log.infoLogger() ); warnLoggers.add( log.warnLogger() ); errorLoggers.add( log.errorLogger() ); } this.logs = new CopyOnWriteArraySet<>( logs ); this.debugLogger = new DuplicatingLogger( debugLoggers ); this.infoLogger = new DuplicatingLogger( infoLoggers ); this.warnLogger = new DuplicatingLogger( warnLoggers ); this.errorLogger = new DuplicatingLogger( errorLoggers ); }
@Test public void shouldPrintDiskUsage() { // Not sure how to get around this w/o spying. The method that we're unit testing will construct // other File instances with this guy as parent and internally the File constructor uses the field 'path' // which, if purely mocked, won't be assigned. At the same time we want to control the total/free space methods // and what they return... a tough one. File storeDir = Mockito.spy( new File( "storeDir" ) ); DatabaseLayout layout = mock( DatabaseLayout.class ); when( layout.databaseDirectory() ).thenReturn( storeDir ); when( storeDir.getTotalSpace() ).thenReturn( 100L ); when( storeDir.getFreeSpace() ).thenReturn( 40L ); AssertableLogProvider logProvider = new AssertableLogProvider(); KernelDiagnostics.StoreFiles storeFiles = new KernelDiagnostics.StoreFiles( layout ); storeFiles.dump( logProvider.getLog( getClass() ).debugLogger() ); logProvider.assertContainsMessageContaining( "100 / 40 / 40" ); }
/** * Remove a {@link Log} from the duplicating set * * @param log the Log to be removed * @return true if the log was found and removed */ public boolean remove( Log log ) { boolean removed = this.logs.remove( log ); this.debugLogger.remove( log.debugLogger() ); this.infoLogger.remove( log.infoLogger() ); this.warnLogger.remove( log.warnLogger() ); this.errorLogger.remove( log.errorLogger() ); return removed; }
"uncommitted transactional changes into account. This is fine if the indexes are opened for non-transactional work, such as for " + "consistency checking. The reason given is: " + e.getMessage(); logDependencyException( context, log.debugLogger(), log.errorLogger(), message ); auxiliaryTransactionStateManager = new NullAuxiliaryTransactionStateManager(); logDependencyException( context, log.debugLogger(), log.warnLogger(), message ); logDependencyException( context, log.debugLogger(), log.errorLogger(), message );
@Test public void shouldCountFileSizeRecursively() throws IOException { // file structure: // storeDir/indexDir/indexFile (1 kB) // storeDir/neostore (3 kB) File storeDir = directory.directory( "storeDir" ); DatabaseLayout layout = DatabaseLayout.of( storeDir ); File indexDir = directory( storeDir, "indexDir" ); file( indexDir, "indexFile", (int) kibiBytes( 1 ) ); file( storeDir, layout.metadataStore().getName(), (int) kibiBytes( 3 ) ); AssertableLogProvider logProvider = new AssertableLogProvider(); KernelDiagnostics.StoreFiles storeFiles = new KernelDiagnostics.StoreFiles( layout ); storeFiles.dump( logProvider.getLog( getClass() ).debugLogger() ); logProvider.assertContainsMessageContaining( "Total size of store: 4.00 kB" ); logProvider.assertContainsMessageContaining( "Total size of mapped files: 3.00 kB" ); }
@Override public Logger debugLogger() { return inner.debugLogger(); }
@Nonnull @Override public Logger debugLogger() { return new AsyncLogger( events, log.debugLogger() ); }
private Logger getLogger( LogRecord record, Log log ) { int level = record.getLevel().intValue(); if ( level <= Level.FINE.intValue() ) { return log.debugLogger(); } else if ( level <= Level.INFO.intValue() ) { return log.infoLogger(); } else if ( level <= Level.WARNING.intValue() ) { return log.warnLogger(); } else { return log.errorLogger(); } }
/** * @param logs A list of {@link Log} instances that messages should be duplicated to */ public DuplicatingLog( List<Log> logs ) { ArrayList<Logger> debugLoggers = new ArrayList<>( logs.size() ); ArrayList<Logger> infoLoggers = new ArrayList<>( logs.size() ); ArrayList<Logger> warnLoggers = new ArrayList<>( logs.size() ); ArrayList<Logger> errorLoggers = new ArrayList<>( logs.size() ); for ( Log log : logs ) { debugLoggers.add( log.debugLogger() ); infoLoggers.add( log.infoLogger() ); warnLoggers.add( log.warnLogger() ); errorLoggers.add( log.errorLogger() ); } this.logs = new CopyOnWriteArraySet<>( logs ); this.debugLogger = new DuplicatingLogger( debugLoggers ); this.infoLogger = new DuplicatingLogger( infoLoggers ); this.warnLogger = new DuplicatingLogger( warnLoggers ); this.errorLogger = new DuplicatingLogger( errorLoggers ); }
private Logger getLogger( Level level ) { int levelValue = level.intValue(); if ( levelValue < minLevel.intValue() ) { return NullLogger.getInstance(); } else if ( levelValue <= Level.FINE.intValue() ) { return log.debugLogger(); } else if ( levelValue <= Level.INFO.intValue() ) { return log.infoLogger(); } else if ( levelValue <= Level.WARNING.intValue() ) { return log.warnLogger(); } else { return log.errorLogger(); } } }
/** * Remove a {@link Log} from the duplicating set * * @param log the Log to be removed * @return true if the log was found and removed */ public boolean remove( Log log ) { boolean removed = this.logs.remove( log ); this.debugLogger.remove( log.debugLogger() ); this.infoLogger.remove( log.infoLogger() ); this.warnLogger.remove( log.warnLogger() ); this.errorLogger.remove( log.errorLogger() ); return removed; }