Appendix B – Generator Configuration
This appendix discusses on modifying the configuration of the Angles for Oracle Generator.
Configuring the Generator debug log
When the generator runs, it will by default write diagnostic information to a text file debug.log
, in the <Generator install folder>\logs folder.
The generator currently has settings for four levels of diagnostic information. In order of increasing verbosity, they are DEBUG, TRACE, VERBOSE, and ALL. DEBUG is the recommended default. You can control this setting by making changes to the log4net/root/level node in the NGOManager-log.config
file, in the <Generator install folder> folder. Usually you will only modify this file if directed by insightsoftwareSupport.
If you are using the command-line version of the generator, apply these changes to ngo-log.config
instead.
Using Logging to Troubleshoot Generation Problems
The Angles for Oracle Generator provides robust logging capabilities to aid the troubleshooting process when errors or warnings are logged during a generation. This section explains how to utilize these logging capabilities.
Automatic Logging of Diagnostic Information
To simplify troubleshooting and communication with insightsoftwareSupport, the Angles for Oracle Generator writes diagnostic information to the debug.log
file, including as generation status, SQL issued, and warnings and errors from third party tools and components. The Angles for Oracle Generator also writes the following external generation artifacts to the log file:
- Generation Arguments File: The generation arguments used during the generation process are written to the log file.
Passwords are not written to the log file.
- SQL*Plus Spool Files: The contents of the spool files that are created during the execution of product name here PL/SQL scripts are written to the log file.
- Hookscript Files in use: The contents of the hookscript files that are currently being used to customize the Angles for Oracle Generator metadata are written to the log file.
Verbose Object Logging During Generation
The Angles for Oracle Generator can log information about metadata that is extracted from NoetixViews and loaded into repository objects during the generation process. This can be useful when troubleshooting issues with specific views or tables.
The generator’s logging level must be set to “VERBOSE” in order to use this capability. For information about modifying the logging level, see Configuring the Generator debug log.
To configure verbose object logging
- Navigate to the folder where the Angles for Oracle Generator is installed and open the
NGOManager-log.config
file in a text editor if you want to configure logging for the Angles for Oracle Generator GUI, orngo-log.config
if you want to configure logging for the console version of the generator. - Add a parent
<filter>
tag to the<appender name=”DebugFileLog”>
tag as follows:<filter type="Noetix.logging.Verbose.VerboseFilter, Noetix.logging">
</filter>
- Add child
<filter>
tags to the parent<filter>
tag created earlier, based on your logging needs. For information about creating filters, see Verbose Object Logging Filter Reference. - Save the configuration file, and then close and reopen the Angles for Oracle Generator if it is currently open.
- Launch a generation then open the <Generator Install Folder>\logs\
debug.log
file to inspect the log messages written as a result of the added filters.
Verbose Object Logging Filter Reference
Logging filters are defined as .xml
tags with the following structure:
<filter type="Noetix.logging.Verbose.VerbosePropertyFilter, Noetix.logging">
<key value="[Object Type to Filter]"/>
<stringToMatch value="[Object IDs to Log]"/>
<Select value="[Object Properties to Log]"/>
</filter>
Any number of these tag structures can be added within a parent <filter type="Noetix.logging.Verbose.VerboseFilter, Noetix.logging">
tag in order to log information about different types of objects.
To configure a filter, the following must be specified
<key value=”[Object Type to Filter]”/>
tag: The<key>
tag defines the type of object to log information about, for example: physical tables, table columns, logical dimensions, etc.Valid object types can be found in the <Generator Install Folder>\
OBIViewsExtractor.xml
file, in thetype
attribute of the<Query>
tags in the file. This file defines the queries used to extract metadata from NoetixViews into the Angles for Oracle Generator and is organized by the Angles for Oracle Generator repository layer.Only one object type value can be specified for each filter and must exactly match the case and format in
OBIViewsExtractor.xml
.<stringToMatch value=”[Object IDs to Log]”/>
tag: The<stringToMatch>
tag defines the ID of the object or objects to log. These IDs correspond to the values in the<IdColumn>
of the<Query>
tag for the object type you want to log.A query tool, such as TOAD, can be used to query the database table or view represented in the
<From>
tag for a list of<IdColumn>
values that are candidates for logging. For example, querying then_gen_all_tables_v.table_id
column would return a list of physical table IDs.An asterisks can be used as a wildcard representing any number of characters to log multiple objects, or when the full ID of the object is unknown. For example, a stringToMatch value of “*APG0_*” would log information about all Noetix views with the APG0 prefix.
<Select value=”[Object Properties to Log]”/>
tag: The<Select>
tag defines the properties or child objects to include in the messages written to the log file. The list of properties and child objects that can be logged can be determined from theOBIViewsExtractor.xml
file. The name attributes on the<Column>
and<Query>
tags in the file represent the properties and child objects that can be logged.When defining the
<Select>
value, the properties to log should be defined in a comma-delimited list that follows the spelling and case fromOBIViewsExtractor.xml
. For example,<Select value=”Name,Query”>
will log the values of the Name and Query properties of matching physical tables.Child objects, such as the list of columns belonging to a physical table, can be logged by including the name from a child
<Query>
tag in the<Select>
value. The properties of the child objects to log should be included in a comma-delimited list wrapped in curly braces after the child object name. For example,<Select value=”Name,Query,Columns{Name,DataType}”>
will log the names and data types of the columns associated with a physical table, in addition to the Name and Query of the parent physical table.The
<Select>
tag is optional. If it is omitted, the ID of each matching object will be logged.
Verbose Object Logging Examples
This section provides examples of verbose object logging filters.
Log Physical Tables: This filter logs the name, comment and list of columns (column name, data type and position) for all physical tables that have an ID ending in “AP1_CREDIT_CARDS”.
<filter type="Noetix.logging.Verbose.VerboseFilter, Noetix.logging">
<filter type="Noetix.logging.Verbose.VerbosePropertyFilter, Noetix.logging">
<key value="Noetix.OBIEE.Model.Physical.Table"/>
<stringToMatch value="*AP1_CREDIT_CARDS"/>
<Select value="Name,Comment,Columns{Name,DataType,Position}"/>
</filter>
</filter>
Log Business Models: This filter logs the name, list of dimensions (dimension name and description), and list of dimension levels (level name, description and number of elements) for all business models the generator extracts from source metadata.
<filter type="Noetix.logging.Verbose.VerboseFilter, Noetix.logging">
<filter type="Noetix.logging.Verbose.VerbosePropertyFilter, Noetix.logging">
<key value="Noetix.Generators.Model.Rolap.Model"/>
<stringToMatch value="*"/>
<Select value="Name,Dimensions{Name,Description},Levels{Name,Description,NumberOfElements}"/>
</filter>
</filter>
Log Alias Tables: This filter logs the name, comment, list of primary keys (primary key name), and list of columns (column name and position) for all alias tables with “AP_INVOICES_INV” in their IDs.
<filter type="Noetix.logging.Verbose.VerboseFilter, Noetix.logging">
<filter type="Noetix.logging.Verbose.VerbosePropertyFilter, Noetix.logging">
<key value="Noetix.OBIEE.Model.Physical.AliasTable"/>
<stringToMatch value="*AP_INVOICES_INV*"/>
<Select value="Name,Comment,PrimaryKeys{Name},Columns{Column,Position}"/>
</filter>
</filter>