Diagnosing and Reporting Critical Errors¶
What’s in this document?
It is essential to gather as many details as possible about an issue once it appears. For this purpose, we provide utilities that generate such issue reports by collecting data from various log files, JVM, etc. Using these issue reports helps us to investigate the problem and provide an appropriate solution as quickly as possible.
Report¶
GraphDB provides an easy way to gather all important system information and package it as an archive that can be sent to graphdb-support@ontotext.com. Run the report using the GraphDB Workbench, or from the generate-report
script in the bin
directory of your distribution.
The report is saved in the GraphDB-Work/report directory. There is always one report - the one that has been generated most recently.
Report content¶
GraphDB version
recursive directory list of the files in GraphDB-Home as
home.txt
recursive directory list of the files in GraphDB-Work as
work.txt
recursive directory list of the files in GraphDB-Data
data.txt
the 30 most recent logs files from GraphDB-Logs ordered by time of creation
full copy of the content of GraphDB-Conf
the output from jcmd
GC.class_histogram
asjcmd_histogram.txt
the output from jcmd
Thread.print
asthread_dump.txt
the System Properties for the GraphDB instance
the repository configurations info as
system.ttl
. All repositories can be found in this file.the
owlim.properties
file for each repository if found. It exists only when the repository has been initialized at least once.

In a cluster, the report can be run from each node in the group. It adds the following to the standard report:
Report data for each node in the cluster
Information about the cluster status in the
graphdb-server-report-<timestamp>/cluster/cluster-status.json
file: endpoints, status, and state of each nodecluster-config.ttl
: The cluster configuration in Turtle format
Each node where a report is requested triggers the report for other nodes, and waits for the result until it is ready, or until a certain time limit is reached. The maximum time to wait is configured via the graphdb.wait.report.minutes property
in the graphdb.properties
with a default of 120 minutes. In case of a timeout or an error, it will be written to the info.txt
file for the corresponding node.
Create report from the Workbench¶
Go to New report in the Application info tab to obtain a new one, wait until it is ready, and download it. It is downloaded in .zip
format as graphdb-server-report-<timestamp>
.
Create report through the report script¶
The generate-report
script can be found in the bin
folder in the GraphDB distribution. It needs graphdb-pid
- the GraphDB for which you want a report. An optional argument is output-file
, the default for which is graphdb-server-report.zip
.
Logs¶
GraphDB uses slf4j for logging through the Logback implementation (the RDF4J facilities for log configuration discovery are no longer used). Instead, the whole distribution has a central place for the logback.xml
configuration file in GraphDB-HOME/conf/logback.xml. If you use the .war
file setup, you can provide the log file location through a system parameter, or we will pick it up from the generated .war
file.
Note
Check the Logback configuration location rules for more information.
On startup, GraphDB logs the logback configuration file location:
[INFO ] 2022-06-06 09:44:26,179 [main | c.o.g.Config] Using 'file:/opt/graphdb/conf/logback.xml' as logback's configuration file
Setting up the root logger¶
The default root
logger is set to info
. You can change it in several ways:
Edit the
logback.xml
configuration file.Note
You do not have to restart the database as it will check the file for changes every 30 seconds, and will reconfigure the logger.
Change the log level through the logback JMX configurator. For more information, see the Logback manual chapter 10.
Start each component with
graphdb.logger.root.level
set to your desired root logging level. For example:bin/graphdb -Dgraphdb.logger.root.level=WARN
Logs location¶
By default, all database components and tools log in GraphDB-HOME/logs when run from the bin
folder.
If you set up GraphDB by deploying .war
files into a standalone servlet container, the following rules apply:
To log in a specified directory, set the
logDestinationDirectory
system property.If GraphDB is run in Tomcat, the logs can be found in
$catalina.base/logs/graphdb
.If GraphDB is run in Jetty, the logs can be found in
$jetty.base/logs/graphdb
.Otherwise, all logs are in the
logs
subdirectory of the current working directory for the process.
Log files¶
Different information is logged in different files. This makes it easier to follow what goes on in different parts of the system.
File name |
Description |
---|---|
|
On a running GraphDB instance with security ON, this file contains a log of all operations performed
on the instance and who performed them.
To start an audit trail, at least one of the
graphdb.audit.role and graphdb.audit.repository
parameters should be enabled. |
|
Contains a log of all ERROR messages returned while the instance was running. |
|
Contains all messages coming from the main part of the engine. |
|
Contains all queries that were sent to the database. The format is machine-readable and allows you to replay the queries when debugging a problem. |
|
Contains slow queries as per the |