...
These are parameters that control the diagnostic tools. They may be set interactively, using the Developer Panel, or read from the developer.settingsproperties
file at startup.
The Developer Panel
...
- It enables you to change the Developer Settings without navigating away from your current page.
- It provides a visual reminder that VIVO is in Developer Mode. If a production instance were accidentally configured to run in Developer Mode, it would be easily noticed.
![No Developer Panel No Developer Panel](/download/thumbnails/55903399/Screen%20Shot%202014-01-27%20at%203.35.18%20PM.png?version=1&modificationDate=1398733070095&api=v2&effects=border-simple,shadow-kn)
![Developer Panel (closed) Developer Panel (closed)](/download/thumbnails/55903399/Screen%20Shot%202014-01-27%20at%201.44.45%20PM.png?version=1&modificationDate=1398733069968&api=v2&effects=border-simple,shadow-kn)
Image Removed
Image Added
Entering Developer Mode
...
In the panel | Allow anonymous user to see and modify developer settings |
---|
In the file | developer.permitAnonymousControl |
---|
Effect | If true , any VIVO user may change the developer settings. If false , only a system administrator (or root) may change the settings. |
---|
The "General" tab
Image Removed
Image Added
Freemarker settings
...
In the panel | Insert HTML comments and start and end of templates |
---|
In the file | developer.insertFreemarkerDelimiters |
---|
Effect | If true , you may view the HTML source for a VIVO page to see which Freemarker templates were used to create each portion of the page. For example: Code Block |
---|
| ...
<!-- FM_BEGIN view-search-default.ftl -->
<a href="/vivo/display/n2252" title="individual name">Oswald, Jeremiah</a>
<span class="display-title">Faculty Member</span>
<p class="snippet"></p><!-- FM_END view-search-default.ftl -->
... |
|
---|
SPARQL Query settings
Full documentation for the logging RDF Service is available here, including detailed explanation of an example log excerpt.
In the panel | LOG each query |
---|
In the file | developer.loggingRDFService.enable |
---|
Effect | Write an entry to the log for each SPARQL query, assuming that INFO -level logging is enabled for the RDFServiceLogger . Each entry includes - The time spent executing the query
- The name of the method on
RDFService that received the query - The format of the result stream from
RDFService - The text of the query.
The remaining settings in this area can be used to restrict which queries are logged, or to include more information for each query. Note |
---|
The configuration models (display, user accounts) and the TBox models are memory-mapped. This means that any "read" operations are run against a cached copy of the model, and are not logged. For these models, only "write" operations are logged. The ABox models are not memory-mapped; both "read" and "write" operations will be logged. |
|
---|
In the panel | Show stack trace |
---|
In the file | developer.loggingRDFService.stackTrace |
---|
Effect | Each log entry will include a stack trace. The trace is abridged so it starts after the ApplicationFilterChain , omits any Jena classes, and ends at the RDFService . |
---|
...
Link text | Show background threads |
---|
URL | /admin/showThreads |
---|
The page | Displays information about the active background threads. These threads may be rebuilding the search index, re-inferencing the knowledge base, or rebuilding the Class Cache. |
---|
Link text | Show RDF data sources |
---|
URL | /admin/showSources |
---|
The page | Displays information about the triple stores, and the layers of adapters that the application wraps around them, including ModelMakers, OntModels, etc. |
---|
The "Search" tab
Image Removed
Image Added
Search query settings
...
In the panel | Restrict by calling stack |
---|
In the file | developer.searchEngine.stackRestriction |
---|
Effect | Set this to a regular expression. A query will be logged only if the abridged calling stack matches the regular expression, in whole or in part. |
---|
Search indexing settings
...
In the panel | Log indexing |
---|
In the file | developer.searchIndex.enable |
---|
Effect | Write an entry to the log each time that documents are added to the Search index, assuming that INFO -level logging is enabled for the SearchEngineLogger . Note that documents are not changed in the Search index: instead, old documents are deleted and new documents are added. Each entry includes - The time taken to add the documents.
- The number of documents added.
- The URIs of the individuals being indexed in the documents.
The remaining settings in this area can be used to restrict which queries are logged, or to include more information for each query. |
---|
In the panel | Show document contents |
---|
In the file | developer.searchIndex.showDocuments |
---|
Effect | Each entry will include the contents of the documents being added. This includes the document identifiers, the boost level, and the contents of each of the fields in the document. |
---|
In the panel | Restrict by URI or name |
---|
In the file | developer.searchIndex.uriOrNameRestriction |
---|
Effect | Set this to a regular expression. An addition will be logged only if the list of document identifiers matches the regular expression, in whole or in part. The document identifiers are the URI and the Name fields. |
---|
In the panel | Restrict by document contents |
---|
In the file | developer.searchIndex.documentRestriction |
---|
Effect | Set this to a regular expression. An addition will be logged only if the contents of the documents matches the regular expression, in whole or in part. |
---|
In the panel | Log breakdown timings for indexing operations |
---|
In the file | developer.searchIndex.logIndexingBreakdownTimings |
---|
Effect | When an indexing operation completed, write entries to the log showing how much time was taken by each indexing object: Excluders, DocumentModifiers, and UriFinders. Each entry includes - The display label of the indexing object
- The number of times that the indexing object was invoked
- The total time required for the indexing object
- The average time for each invocation of the indexing object
|
---|
In the panel | Log deletions |
---|
In the file | developer.searchDeletions.enable |
---|
Effect | Write an entry to the log each time documents are deleted from the Search index, assuming that INFO -level logging is enabled for the SearchEngineLogger . Each entry includes - The time spent deleting the documents
- Either
- the list of
URI s being deleted, or - the search query that was used to find documents for deletion.
|
---|
In the panel | Suppress the automatic indexing of changed triples. |
---|
In the file | developer.searchIndex.suppressModelChangeListener |
---|
Effect | If this is selected, the search indexer will not automatically adjust to changes in the data model. This means that you can ingest data much more quickly, but you must manually request a full re-indexing when your ingests are complete. Note |
---|
This doesn't really belong in the developer panel, since it changes the way VIVO operates. It was put here to answer an urgent requirement. | |
---|
Links
Link text | Rebuild search index |
---|
URL | /SearchIndex |
---|
The page | Allows you to request a rebuild of the search index, and to monitor its progress. |
---|
The "Authorization" tab
Image Removed
...
Image Added
In the panel | Write policy decisions to the log |
---|
In the file | developer.authorization.logDecisions.enable |
---|
Effect | Write an entry to the log for each policy decision that is made for any requested action, assuming that INFO -level logging is enabled for the PolicyDecisionLogger . Each entry includes - The requested action
- The name of the policy
- The decision and message.
The remaining settings in this area can be used to restrict which queries are decisions are logged, or to include more information for each decision. |
---|
In the panel | Include the user identifiers in the log record |
---|
In the file | developer.authorization.logDecisions.addIdentifiers |
---|
Effect | Each log entry will include the identifiers assigned to the currently logged-in user. |
---|
In the panel | Skip inconclusive decisions |
---|
In the file | developer.authorization.logDecisions.skipInconclusive |
---|
Effect | Do not log INCONCLUSIVE decisions. If all policies return INCONCLUSIVE for a request, this is treated as UNAUTHORIZED , and will be logged. |
---|
In the panel | Restrict by requested action |
---|
In the file | developer.authorization.logDecisions.actionRestriction |
---|
Effect | Set this to a regular expression. A decision will be logged only if the string value of the requested action matches the regular expression, in whole or in part. |
---|
In the panel | Restrict by policy name |
---|
In the file | developer.authorization.logDecisions.policyRestriction |
---|
Effect | Set this to a regular expression. A decision will be logged only if the string value of the policy matches the regular expression, in whole or in part. |
---|
In the panel | Restrict by user identifiers |
---|
In the file | developer.authorization.logDecisions.userRestriction |
---|
Effect | Set this to a regular expression. A decision will be logged only if the list of user identifiers matches the regular expression, in whole or in part. |
---|
What if the developer panel doesn't appear?
...