FormattedLogProvider.withZoneId( logTimeZone ).toOutputStream( System.out ), fileSystem, verbose, reportDir.toFile(), new ConsistencyFlags( checkGraph, checkIndexes, checkLabelScanStore, checkPropertyOwners ) );
public static class Builder { private LogProvider userLogProvider = NullLogProvider.getInstance(); private Executor rotationExecutor; private long internalLogRotationThreshold; private long internalLogRotationDelay; private int maxInternalLogArchives; private Consumer<LogProvider> rotationListener = logProvider -> { }; private Map<String, Level> logLevels = new HashMap<>(); private Level defaultLevel = Level.INFO; private ZoneId timeZoneId = ZoneOffset.UTC; private File debugLog; private Builder() { } public Builder withUserLogProvider( LogProvider userLogProvider ) { this.userLogProvider = userLogProvider; return this; } public Builder withRotation( long internalLogRotationThreshold, long internalLogRotationDelay, int maxInternalLogArchives, JobScheduler jobScheduler ) { return withRotation( internalLogRotationThreshold, internalLogRotationDelay, maxInternalLogArchives, jobScheduler.executor( Group.LOG_ROTATION ) );
private LogProvider setupLogging( Config config ) { FormattedLogProvider.Builder builder = FormattedLogProvider .withoutRenderingContext() .withZoneId( config.get( GraphDatabaseSettings.db_timezone ).getZoneId() ) .withDefaultLogLevel( config.get( GraphDatabaseSettings.store_internal_log_level ) ); LogProvider userLogProvider = config.get( GraphDatabaseSettings.store_user_log_to_stdout ) ? builder.toOutputStream( System.out ) : createFileSystemUserLogProvider( config, builder ); JULBridge.resetJUL(); Logger.getLogger( "" ).setLevel( Level.WARNING ); JULBridge.forwardTo( userLogProvider ); JettyLogBridge.setLogProvider( userLogProvider ); return userLogProvider; }
public static class Builder { private LogProvider userLogProvider = NullLogProvider.getInstance(); private Executor rotationExecutor; private long internalLogRotationThreshold; private long internalLogRotationDelay; private int maxInternalLogArchives; private Consumer<LogProvider> rotationListener = logProvider -> { }; private Map<String, Level> logLevels = new HashMap<>(); private Level defaultLevel = Level.INFO; private ZoneId timeZoneId = ZoneOffset.UTC; private File debugLog; private Builder() { } public Builder withUserLogProvider( LogProvider userLogProvider ) { this.userLogProvider = userLogProvider; return this; } public Builder withRotation( long internalLogRotationThreshold, long internalLogRotationDelay, int maxInternalLogArchives, JobScheduler jobScheduler ) { return withRotation( internalLogRotationThreshold, internalLogRotationDelay, maxInternalLogArchives, jobScheduler.executor( Group.LOG_ROTATION ) );
config.put( GraphDatabaseSettings.store_internal_log_path.name(), internalLogFile.getAbsolutePath() ); LogProvider userLogProvider = FormattedLogProvider.withZoneId( logZoneIdFrom( config ) ).toOutputStream( logOutputStream ); GraphDatabaseDependencies dependencies = GraphDatabaseDependencies.newDependencies() .userLogProvider( userLogProvider );
private LogProvider createFileSystemUserLogProvider( Config config, FormattedLogProvider.Builder builder ) { BufferingExecutor deferredExecutor = new BufferingExecutor(); dependencies.withDeferredExecutor( deferredExecutor, Group.LOG_ROTATION ); FileSystemAbstraction fs = new DefaultFileSystemAbstraction(); File destination = config.get( GraphDatabaseSettings.store_user_log_path ); Long rotationThreshold = config.get( GraphDatabaseSettings.store_user_log_rotation_threshold ); try { if ( rotationThreshold == 0L ) { userLogFileStream = createOrOpenAsOutputStream( fs, destination, true ); return builder.toOutputStream( userLogFileStream ); } return builder.toOutputStream( new RotatingFileOutputStreamSupplier( fs, destination, rotationThreshold, config.get( GraphDatabaseSettings.store_user_log_rotation_delay ).toMillis(), config.get( GraphDatabaseSettings.store_user_log_max_archives ), deferredExecutor ) ); } catch ( IOException e ) { throw new RuntimeException( e ); } }
@Override public void start() { tempDirectory = createTempDirectory(); Map<String, String> opts = new HashMap<>(); // Neo4j 2.x opts.put(DBMS_SECURITY_AUTH_ENABLED, Boolean.FALSE.toString()); opts.put(ORG_NEO_4J_SERVER_WEBSERVER_ADDRESS, embeddedNeo4jConfiguration.getListenAddress()); opts.put(ORG_NEO_4J_SERVER_WEBSERVER_PORT, Integer.toString(embeddedNeo4jConfiguration.getHttpPort())); // Neo4j 2.x/3.x String sslDir = tempDirectory.toFile().getAbsolutePath() + "neo4j-home/"; opts.put(ServerSettings.tls_key_file.name(), sslDir + "/ssl/snakeoil.key"); opts.put(ServerSettings.tls_certificate_file.name(), sslDir + "/ssl/snakeoil.cert"); Config defaults = new Config(opts); // Config.empty().with(opts); FormattedLogProvider logProvider = FormattedLogProvider.withDefaultLogLevel(Level.INFO).toOutputStream(System.out); GraphDatabaseDependencies graphDatabaseDependencies = GraphDatabaseDependencies.newDependencies().userLogProvider(logProvider); Database.Factory factory = new Database.Factory() { @Override public Database newDatabase(Config config, GraphDatabaseFacadeFactory.Dependencies dependencies) { return new WrappedDatabase((GraphDatabaseAPI) graphDatabaseService); } }; communityNeoServer = new CommunityNeoServer(defaults, factory, graphDatabaseDependencies, logProvider); communityNeoServer.start(); }
/** * Create page cache * @param fileSystem file system that page cache will be based on * @param pageCacheTracer global page cache tracer * @param pageCursorTracerSupplier supplier of thread local (transaction local) page cursor tracer that will provide * thread local page cache statistics * @param config page cache configuration * @param versionContextSupplier version context supplier * @param jobScheduler page cache job scheduler * @return created page cache instance */ public static PageCache createPageCache( FileSystemAbstraction fileSystem, PageCacheTracer pageCacheTracer, PageCursorTracerSupplier pageCursorTracerSupplier, Config config, VersionContextSupplier versionContextSupplier, JobScheduler jobScheduler ) { config.augmentDefaults( GraphDatabaseSettings.pagecache_memory, "8M" ); ZoneId logTimeZone = config.get( GraphDatabaseSettings.db_timezone ).getZoneId(); FormattedLogProvider logProvider = FormattedLogProvider.withZoneId( logTimeZone ).toOutputStream( System.err ); ConfiguringPageCacheFactory pageCacheFactory = new ConfiguringPageCacheFactory( fileSystem, config, pageCacheTracer, pageCursorTracerSupplier, logProvider.getLog( PageCache.class ), versionContextSupplier, jobScheduler ); return pageCacheFactory.getOrCreatePageCache(); } }
private static URI resolveUriWithProvider( String providerName, Config config, String from, Args args ) throws ToolFailureException { BackupExtensionService service; try { service = Service.load( BackupExtensionService.class, providerName ); } catch ( NoSuchElementException e ) { throw new ToolFailureException( String.format( UNKNOWN_SCHEMA_MESSAGE_PATTERN, providerName ) ); } try { ZoneId logTimeZone = config.get( GraphDatabaseSettings.db_timezone ).getZoneId(); FormattedLogProvider userLogProvider = FormattedLogProvider.withZoneId( logTimeZone ).toOutputStream( System.out ); return service.resolve( from, args, new SimpleLogService( userLogProvider, NullLogProvider.getInstance() ) ); } catch ( Throwable t ) { throw new ToolFailureException( t.getMessage() ); } }
@Override @Nonnull public AdminCommand create( Path homeDir, Path configDir, OutsideWorld outsideWorld ) { boolean debug = System.getenv().get( "NEO4J_DEBUG") != null; LogProvider logProvider = FormattedLogProvider.withDefaultLogLevel( debug ? Level.DEBUG : Level.NONE ).toOutputStream( outsideWorld.outStream() ); Monitors monitors = new Monitors(); OnlineBackupContextBuilder contextBuilder = new OnlineBackupContextBuilder( homeDir, configDir ); BackupModule backupModule = new BackupModule( outsideWorld, logProvider, monitors ); BackupSupportingClassesFactoryProvider classesFactoryProvider = getProvidersByPriority().findFirst().orElseThrow( noProviderException() ); BackupSupportingClassesFactory supportingClassesFactory = classesFactoryProvider.getFactory( backupModule ); BackupStrategyCoordinatorFactory coordinatorFactory = new BackupStrategyCoordinatorFactory( backupModule ); return new OnlineBackupCommand( outsideWorld, contextBuilder, supportingClassesFactory, coordinatorFactory ); }
@Override public void start() { Map<String, String> opts = new HashMap<>(); // Neo4j 3.x opts.put(DBMS_CONNECTOR_HTTP_TYPE, HTTP_TYPE); opts.put(DBMS_CONNECTOR_HTTP_ENABLED, Boolean.TRUE.toString()); opts.put(DBMS_CONNECTOR_HTTP_LISTEN_ADDRESS, embeddedNeo4jConfiguration.getListenAddress() + ":" + embeddedNeo4jConfiguration.getHttpPort()); opts.put(DBMS_CONNECTOR_BOLT_ENABLED, Boolean.TRUE.toString()); opts.put(DBMS_CONNECTOR_BOLT_LISTEN_ADDRESS, embeddedNeo4jConfiguration.getListenAddress() + ":" + embeddedNeo4jConfiguration.getBoltPort()); Config defaults = Config.defaults(opts); FormattedLogProvider logProvider = FormattedLogProvider.withDefaultLogLevel(Level.INFO).toOutputStream(System.out); final GraphDatabaseDependencies graphDatabaseDependencies = GraphDatabaseDependencies.newDependencies().userLogProvider(logProvider); GraphFactory graphFactory = (config, dependencies) -> (GraphDatabaseFacade) graphDatabaseService; communityNeoServer = new CommunityNeoServer(defaults, graphFactory, graphDatabaseDependencies); communityNeoServer.start(); }
private static LogService logService( FileSystemAbstraction fileSystem, Config config ) { File logFile = config.get( store_internal_log_path ); try { ZoneId zoneId = config.get( GraphDatabaseSettings.db_timezone ).getZoneId(); FormattedLogProvider logProvider = FormattedLogProvider.withZoneId( zoneId ).toOutputStream( System.out ); return StoreLogService.withUserLogProvider( logProvider ) .withInternalLog( logFile ) .build( fileSystem ); } catch ( IOException e ) { throw new RuntimeException( e ); } }
public AsyncRequestLog( FileSystemAbstraction fs, ZoneId logTimeZone, String logFile, long rotationSize, int rotationKeepNumber ) throws IOException { NamedThreadFactory threadFactory = new NamedThreadFactory( "HTTP-Log-Rotator", true ); ExecutorService rotationExecutor = Executors.newCachedThreadPool( threadFactory ); outputSupplier = new RotatingFileOutputStreamSupplier( fs, new File( logFile ), rotationSize, 0, rotationKeepNumber, rotationExecutor ); FormattedLogProvider logProvider = FormattedLogProvider.withZoneId( logTimeZone ) .toOutputStream( outputSupplier ); asyncLogProcessingExecutor = Executors.newSingleThreadExecutor( new NamedThreadFactory( "HTTP-Log-Writer" ) ); asyncEventProcessor = new AsyncEvents<>( this, this ); AsyncLogProvider asyncLogProvider = new AsyncLogProvider( asyncEventProcessor, logProvider ); log = asyncLogProvider.getLog( "REQUEST" ); }
private LogProvider setupLogging( Config config ) { FormattedLogProvider.Builder builder = FormattedLogProvider .withoutRenderingContext() .withZoneId( config.get( GraphDatabaseSettings.db_timezone ).getZoneId() ) .withDefaultLogLevel( config.get( GraphDatabaseSettings.store_internal_log_level ) ); LogProvider userLogProvider = config.get( GraphDatabaseSettings.store_user_log_to_stdout ) ? builder.toOutputStream( System.out ) : createFileSystemUserLogProvider( config, builder ); JULBridge.resetJUL(); Logger.getLogger( "" ).setLevel( Level.WARNING ); JULBridge.forwardTo( userLogProvider ); JettyLogBridge.setLogProvider( userLogProvider ); return userLogProvider; }
@Override public void outputFileCreated( OutputStream newStream ) { FormattedLogProvider logProvider = internalLogBuilder.toOutputStream( newStream ); logProvider.getLog( StoreLogService.class ).info( "Opened new internal log file" ); rotationListener.accept( logProvider ); }
/** * Creates a {@link FormattedLogProvider} instance that writes messages to a {@link Writer}. * * @param writer A {@link Writer} to write to * @return A {@link FormattedLogProvider} instance that writes to the specified Writer */ public static FormattedLogProvider toWriter( Writer writer ) { return new Builder().toWriter( writer ); }
/** * Set the zoneId from timestamp for datestamps in the log * * @param timezone to use * @return this builder * @deprecated use {@link #withZoneId(ZoneId)} */ @Deprecated public Builder withTimeZone( TimeZone timezone ) { return withZoneId( timezone.toZoneId() ); }
/** * Set the zoneId for datestamps in the log * * @return this builder */ public Builder withUTCZoneId() { return withZoneId( ZoneOffset.UTC ); }
/** * Start creating a {@link FormattedLogProvider} with the specified zoneId from timezone for datestamps in the log * * @param timeZone to use * @return a builder for a {@link FormattedLogProvider} * @deprecated use {@link #withZoneId(ZoneId)} */ @Deprecated public static Builder withTimeZone( TimeZone timeZone ) { return new Builder().withZoneId( timeZone.toZoneId() ); }
/** * Start creating a {@link FormattedLogProvider} with the specified log {@link Level} for all {@link Log}s by default. * Use {@link Builder#toOutputStream} to complete. * * @param level the log level to use as a default * @return a builder for a {@link FormattedLogProvider} */ public static Builder withDefaultLogLevel( Level level ) { return new Builder().withDefaultLogLevel( level ); }