Logging Structure

= What is logged to each file? =

Dryad Logs (e.g. /opt/dryad/log)
Most of the Dryad logs are generated by the Dryad tomcat process, configured by log4j. log4j allows us to route messages to log files based on the class that generated the message. For example, all classes in the org.dspace.doi package send their log messages to dspace-doi.log. See log4j.properties for the most up-to-date configuration. Most of the files in the Dryad Logs directory are configured by this log4j.properties file.

dspace.log
dspace.log is the main logfile for Dryad. Any messages not explicitly sent to a different appender (logfile) will appear here. It should be configured at the WARN level.

dataone-mn.log
dataone-mn.log records log messages for Dryad's DataONE MN API webapp.

dryad-usage.log
dryad-usage.log records usage information - user interactions documented at Dryad Usage Logging Technology. Technically it is tied to the *org.dspace.usagelogging* package, but it is a logfile intended for statistics/analytics and not debugging.

dspace-doi.log
dspace-doi.log records messages about DOI operations. See DOI Services Technology. This includes minting DOIs in Dryad and communications with external DOI registration web services.

journal-submit.log
journal-submit.log records messages from the Journal Metadata Processing Technology webapp. This webapp handles email messages from integrated journals and stores them for the submission system.

handle-plugin.log
The Handle Server Technology does not run under the tomcat process that is responsible for the rest of the logging. handle-plugin.log does use log4j, but is configured by log4j-handle-plugin.properties at runtime.

handle-server.log
In addition to the log4j logfile, the Handle Server Technology writes its own logfile to handle-server.log

Tomcat Logs (/var/tomcat/log)
Dryad primarily runs under a tomcat instance, which does some of its own logging. The Tomcat logs should only contain administrative information for tomcat, and not application-specific data. See Logging_Technology for configuration details.

One caveat is the Logging_Technology file. The script that runs the tomcat process redirects STDOUT to this file. So if any part of Dryad is sending messages to STDOUT (and not through log4j), they will end up in catalina.out. This can happen if the slf4j-jdk binding file reappears (see Logging_Technology.

Apache httpd Logs (/var/log/httpd/dryad)
Dryad uses Apache httpd as a front-end http server, and proxies requests to tomcat. httpd logging is configured in /etc/httpd/conf and uses CustomLog combined for access logs and ErrorLog for error logs. These are common configurations for Apache httpd.

datadryad.org-access_log
datadryad.org-access_log contains IP Addresses, times, HTTP response codes, methods, paths, referrers, user agents, and geographic locations for all requests.

Prior to January 2014, The proxy connection between httpd and Tomcat was using HTTP (port 8080) and not AJP (port 8009). With the HTTP proxying, the requests to tomcat were seen as coming from 127.0.0.1 (localhost) and not their actual remote IP address. The actual IP addresses are logged in datadryad.org-access, so it is useful for reconciling dryad logs with real IP addresses. With AJP, Tomcat sees the real IP address in the request.

datadryad.org-error_log
datadryad.org-error_log contains error messages at the httpd level. This includes messages for files not found, errors from apache modules, etc.

= Retention length and log archives =

Logfiles are archived to /opt/dryad-data/log_archives after 30 days.