Configuration schema for the out-of-process model
When used out-of-process, you must configure the Semantic Logging Application Block by using an XML configuration file in the runtime folder of the Out-Of-Process Host application or service. Figure 1 shows a high-level schematic view of the schema of this configuration file.
Figure 1 - A schematic view of the schema for the out-of-process configuration file
The following sections describe the elements shown in Figure 1 and the attributes for each one:
- configuration element
- traceEventService element
- sinks element
- consoleSink element
- customSink element
- flatFileSink element
- rollingFlatFileSink element
- sqlDatabaseSink element
- windowsAzureTableSink element
- sources element
- eventSource element
- arguments element
- filter element
- Formatter elements
- customEventTextFormatter element
- jsonEventTextFormatter element
- textEventTextFormatter element
- xmlEventTextFormatter element
configuration element
This is the top-level element in the configuration file. This is a required element. This element has two child elements and no attributes. The following table lists the child elements of the configuration element.
Child element |
Description |
---|---|
traceEventService |
Contains custom settings for the trace event service. This element is optional. |
sinks |
Contains zero or more elements that specify the sinks that determine where the trace event service will save trace messages. This element is optional but, if it is not included, the out-of-process host application will not collect or process any trace messages. |
traceEventService element
The traceEventService element enables you to override the default settings for the trace event service. This element is optional. This element has no child elements. The following table lists the attributes for the traceEventService element.
Attribute |
Description |
---|---|
sessionNamePrefix |
The prefix for the name of the trace event session. The maximum length is 200 characters. The full name of the ETW session is the value of this sessionNamePrefix attribute concatenated with the name of the sink. If not specified, the prefix of the session name is Microsoft-SemanticLogging-Etw. |
sinks element
The elements in the top-level sinks element define the sinks used by the trace event service. The sinks element must contain at least one child element that is the name of a sink. The available sink elements are:
- consoleSink element
- customSink element
- flatFileSink element
- rollingFlatFileSink element
- sqlDatabaseSink element
- windowsAzureTableSink element
consoleSink element
This element specifies an instance of the Console event sink. It has a single sources child element. The following table lists the attributes of the consoleSink element.
Attribute |
Description |
---|---|
name |
The name of the sink. The maximum length is 200 characters. This is a required attribute. |
colorMapperType |
The type name of the color mapper to use with this sink. This is an optional attribute. The default if omitted is none. |
customSink element
This element specifies an instance of a custom event sink. It has a single parameters child element that contains a list of parameters for this sink. The following table lists the attributes of the customSink element.
Attribute |
Description |
---|---|
name |
The name of the custom sink. The maximum length is 200 characters. This is a required attribute. |
type |
The full type name of the custom sink. This is a required attribute. |
For more information about using the customSink element, see the topic Creating a custom event sink.
parameters and parameter elements
The parameters element contains one or more parameter elements. Each parameter element has name, type, and value attributes, and optionally contains a nested parameters element.
flatFileSink element
This element specifies an instance of the Flat File event sink. It has a single sources child element. The following table lists the attributes of the flatFileSink element.
Attribute |
Description |
---|---|
name |
The name of the sink. The maximum length is 200 characters. This is a required attribute. |
fileName |
The unique name for the file to use for writing trace messages. Each sink instance should write to a separate file. This is a required attribute. |
rollingFlatFileSink element
This element specifies an instance of the Rolling Flat File****sink. It has a single sources child element. The following table lists the attributes of the rollingFlatFileSink element.
Attribute |
Description |
---|---|
name |
The name of the sink. The maximum length is 200 characters. This is a required attribute. |
fileName |
The unique name for the file to use for writing trace messages. Each sink instance should write to a separate file. This is a required attribute. |
rollSizeKB |
This is the maximum size the file can reach, in kilobytes, before it rolls over. This is an optional attribute. |
timeStampPattern |
This is the date/time format used for the date information appended to the new file name. This is an optional attribute. See the notes in the topic Rolling Flat File event sink for more details about the behavior of this setting. |
rollFileExistsBehavior |
This property determines what happens to an existing file when it rolls over. If you select Increment, the application block creates a new file and names it by incrementing the timestamp. If you select Overwrite and do not provide a value for the Timestamp Pattern property, the existing file is overwritten. This is an optional attribute. |
rollInterval |
This property determines when the log file rolls over. You can select None (the default), Midnight (in which case the log will roll over at midnight), Minute, Hour, Day, Month, Week, or Year. This is an optional attribute. |
maxArchivedFiles |
The maximum number of log files to retain. When set to an integer value, the sink will purge old files based on the file creation date when the number exceeds the specified value. This is an optional attribute. See the notes in the topic Rolling Flat File event sink for more details about the behavior of this setting. |
sqlDatabaseSink element
This element specifies an instance of the SQL Database sink. It has a single sources child element. The following table lists the attributes of the sqlDatabaseSink element. See the notes in the topic SQL Database event sink for more details about using this sink.
Attribute |
Description |
---|---|
Name |
The name of the sink. The maximum length is 200 characters. This is a required attribute. |
instanceName |
The name of the instance originating the log entries. This is a required attribute. |
connectionString |
The connection string for the target database for log messages. This is a required attribute. |
tableName |
The name of the database table that will store the log entries. This is an optional attribute. If omitted, the default value is Traces. |
bufferingIntervalInSeconds |
The frequency at which the sink writes the accumulated log messages to the SQL Server database. If set to zero, the sink does not buffer messages but writes each message directly to the database table. This is an optional attribute; the default value is 30 seconds. |
bufferingCount |
The number of log messages the sink will accumulate in the buffer before it writes them to the database table. This is an optional attribute; the default value is 1000 log messages. |
maxBufferSize |
Defines the maximum number of entries that can be buffered while the sink is sending to the database before it starts dropping entries. This is an optional attribute; the default value is 30,000 entries. |
bufferingFlushAllTimeoutInSeconds |
Defines a timeout interval for flushing the entries when the service is shut down. If the timeout period elapses before all entries have been sent to the database, some will be lost. This is an optional attribute; the default value is five seconds. A value of -1 specifies an infinite timeout. |
windowsAzureTableSink element
This element specifies an instance of the Azure Table Storage sink. It has a single sources child element. The following table lists the attributes of the windowsAzureTableSink element. See the notes in the topic Azure Table Storage event sink for more details about using this sink.
Attribute |
Description |
---|---|
Name |
The name of the sink. The maximum length is 200 characters. This is a required attribute. |
instanceName |
The name of the instance originating the log entries. This name must be unique for each instance of the application. This is a required attribute. |
connectionString |
The connection string for the Azure storage account you are using. This is a required attribute. |
tableAddress |
The name of the table you will write log messages to. This is an optional attribute. If omitted the default value is SLABLogsTable. |
sortKeysAscending |
Controls the sort order of the log messages in the table. This is an optional attribute. The default value is true. |
bufferingIntervalInSeconds |
The frequency at which the sink writes the accumulated log messages to Azure storage. If set to zero, the sink does not buffer messages but writes each message directly to the log file. This is an optional attribute; the default value is ten seconds. |
maxBufferSize |
Defines the maximum number of entries that can be buffered while the sink is sending entries to Azure storage before it starts dropping entries. This is an optional attribute; the default value is 30,000 entries. |
bufferingFlushAllTimeoutInSeconds |
Defines a timeout interval for flushing the entries when the service is shut down. If the timeout period elapses before all entries have been sent to Azure storage, some will be lost. This is an optional attribute; the default value is five seconds. A value of -1 specifies an infinite timeout. |
sources element
Each sink element contains a sources element that lists all of the event sources from which the sink receives trace messages. The event sources are defined in one or more eventSource child elements.
eventSource element
Each eventSource element specifies an event source from which the sink can receive trace messages. The following table lists the child elements of the eventSource element.
Child element |
Description |
---|---|
arguments |
This element contains a list of arguments in the form of key/value pairs that are passed to the EventSource implementation. This element is optional. See arguments element for more information. |
filter |
This element contains a list of processes from which events will be collected. This element is optional. See filter element for more information. |
The following table lists the attributes of the eventSource element.
Attribute |
Description |
---|---|
name |
The name of the event source from which to receive trace messages. This value should match the Name property of the EventSource attribute in your event source class. If the class does not contain the EventSource attribute, use the class name. This is an optional attribute. See the notes that follow this table. |
id |
The GUID of the event source from which to receive trace messages. This is an optional attribute. See the notes that follow this table. If this is not supplied, the system will determine the correct GUID to use. |
level |
Specifies the lowest level of messages that must be logged. The value is one of LogAlways, Critical, Error, Warning, Informational, and Verbose. This is an optional attribute. The default value is LogAlways. |
matchAnyKeyword |
A long value that identifies the keyword(s) from the EventSource to match. This value is treated as a bitvector to enable you to match on multiple keywords. The default value is zero, which matches all keywords. |
Notes
You should provide either the name or the id attribute but not both.
Given the following keyword definitions in an EventSource implementation:
[EventSource(Name = "MyCompany")]
public class MyCompanyEventSource : EventSource
{
public class Keywords
{
public const EventKeywords Page = (EventKeywords)1;
public const EventKeywords DataBase = (EventKeywords)2;
public const EventKeywords Diagnostic = (EventKeywords)4;
public const EventKeywords Perf = (EventKeywords)8;
}
...
}
If you set the value of the matchAnyKeyword attribute to four, the event listener will capture log messages with the Diagnostic keyword. If you set the value of the matchAnyKeyword attribute to five, the event listener will capture log messages with the Page or Diagnostic keyword.
arguments element
This element can be used in conjunction with the filter element to sample and filter events received by the Out-of-Process Host. The arguments element contains a list of arguments in the form of one or more add elements, each containing key/value pairs that represent one argument key/value pair that will be passed to the EventSource implementation. This element is optional, and can occur only once.
The EventSource class accepts a range of arguments that control its behavior. For more information about the supported arguments, see Sampling and filtering events.
filter element
This element can be used in conjunction with the arguments element to sample and filter events received by the Out-of-Process Host. The filter element is optional, and can occur only once.
The filter element contains one or more process child elements that specify the processes from which events will be collected. Each process element contains only a name attribute that specifies the name of the process to filter.
For more information about using the filter element, see Sampling and filtering events.
Formatter elements
The sink elements flatFileSink, rollingFlatFileSink, consoleSink, and customSink can contain a single nested formatter element. The available formatter elements are:
- customEventTextFormatter element
- jsonEventTextFormatter element
- textEventTextFormatter element
- xmlEventTextFormatter element
customEventTextFormatter element
This element specifies an instance of a custom event text formatter. It has a single parameters child element that contains a list of parameters for this formatter. The following table lists the attributes of the customEventTextFormatter element.
Attribute |
Description |
---|---|
type |
The full type name of the custom formatter. This is a required attribute. |
For information about creating custom event text formatters, see Creating a custom event formatter.
jsonEventTextFormatter element
This element specifies an instance of the JSON event text formatter. It has no child elements. The following table lists the attributes of the jsonEventTextFormatter element.
Attribute |
Description |
---|---|
formatting |
Either None or Indented. This controls the layout of the JSON in the output. This is an optional attribute. The default value is None. |
dateTimeFormat |
The format of the timestamp written to the log. By default, the block uses “O” as the format string. For more information, see Standard Date and Time Format Strings on MSDN. This is an optional attribute. |
includeEntrySeparator |
Set this to true to include a comma separator between event entries in the sink destination. |
textEventTextFormatter element
This element specifies an instance of the standard event text formatter. It has no child elements. The following table lists the attributes of the textEventTextFormatter element.
Attribute |
Description |
---|---|
header |
A string to appear before the log message. This is an optional attribute. |
footer |
A string to appear after the log message. This is an optional attribute. |
verbosityThreshold |
An event level as defined in the EventLevel enumeration: one of Verbose (5), Informational (4), Warning (3), Error (2), Critical (1), or LogAlways (0). All log messages with an event level equal to or lower than this value are displayed in detail. Other log messages are displayed in summary. This is an optional attribute. The default value is LogAlways. |
dateTimeFormat |
The format of the timestamp written to the log. By default, the block uses “O” as the format string. For more information, see Standard Date and Time Format Strings on MSDN. This is an optional attribute. |
xmlEventTextFormatter element
This element specifies an instance of the XML event text formatter. It has no child elements. The following table lists the attributes of the xmlEventTextFormatter element.
Attribute |
Description |
---|---|
formatting |
Either None or Indented. This controls the layout of the XML in the output. This is an optional attribute. The default value is None. |
dateTimeFormat |
The format of the timestamp written to the log. By default, the block uses “O” as the format string. For more information, see Standard Date and Time Format Strings on MSDN. This is an optional attribute. |
This formatter generates XML that complies with the ETW Event Schema.