This guide will cover sections and options related to Project OpenPTK's XML configuration file. A complete Sample XML Configuration File (openptk.xml) is available for reference.
Sections:
| Definitions | Definition | ||||||
|---|---|---|---|---|---|---|---|
| Attributes | Attribute | ||||||
| Functions | Function | ||||||
| Arguments | Argument | ||||||
| Operations | Operation |
| Associations | Association | ||||||
|---|---|---|---|---|---|---|---|
| Attributes | Attribute | ||||||
| Functions | Function | ||||||
| Arguments | Argument | ||||||
| Operations | Operation |
Defaults
These Properties are made available for reference by other Properties using the %{property_name} syntax. These Properties are NOT automatically copied into any of the other Properties defined within the XML configuration file. The following Elements will have their value Arguments checked for these Defaults:
- Property
- Argument
Syntax
<Defaults> <Properties> <Property name="debug.level" value="4"/> <Property name="..." value="..."/> </Properties> </Defaults>
Arguments
None
Properties
| Name | Required | Description | Example Value |
|---|---|---|---|
| debug | Yes | Specifies what level of debugging data should be sent to the Logger. A value of "0" turns of all debugging output (only INFO and ERRORS are sent to the Logger. To turn on the debug out, set the value between "1" and "4". The higher the number, the more details. | 4 |
Parent Element
<OpenPTK>
Child Element(s)
- (none)
Contexts
This section defines the available Contexts and sets some global values used by the Framework.
| Properties Properties defined at this level will be pushed to the all of the defined Contexts. Any Property can be added at this level. There are a number of required and optional INTERNAL Properties that need to be defined (see section below). |
Syntax
<Contexts> <Properties> <Properties> <Property name="context.default" value="Person-SunIdm-SPML"/> <Property name="context.classname" value="org.openptk.provision.common.TimeoutContext"/> <Property name="logger" value="UnixLogFile"/> <Property name="audit" value="false"/> <Property name="timestamp" value="true"/> </Properties> </Properties> <Context ...> </Context> ... </Contexts>
Arguments
None
Properties
| Name | Required | Description | Example Value |
|---|---|---|---|
| context.default | Yes | Which Context should be used if a Context is not specified. | Person-SPML-Sun |
| context.classname | Yes | The fully qualified name of a Class that implements the ContextIF Interface. | org.openptk.provision.common.BasicContext |
| logger | Yes | Which Logger should be used. The Logger is used by the Framework to handle all types of information that needs to be recorded to a log. | UnixLogFile |
| audit | No | Send audit information to the Logger. Values are "true" or "false". | false |
| timestamp | No | Collect timestamp information send timings to the Logger. Values are "true" or "false". | true |
Parent Element
<OpenPTK>
Child Element(s)
- Context (required: one or more)
Contexts.Context
A Context defines the combination of:
- Definition
- Connection
- Association
- AttrGroup
| Properties Properties defined at this level will be pushed to the all of the defined Operations (including the Properties defined in the high-level Element Contexts). Any Property can be added at this level. There are a number of required and optional INTERNAL Properties that need to be defined (see section below). |
Syntax
<Context id="..." enabled="..." definition="..." connection="..." association="...">
<Properties>
<Property name="context.description" value="Person to Sun Identity Manager using SPML"/>
<Property name="operation.classname" value="org.openptk.provision.spi.operations.SpmlSunOperations"/>
<Property name="key" value="uniqueid"/>
<Property name="objectclass" value="user"/>
<Property name="timeout" value="%{timeout.write}"/>
</Properties>
<Query type="..."/>
<Operations>
<Operation id="..." />
...
</Operations>
</Context>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | A unique identifier for the Context | id="Person-SunIdm-SPML" |
| enabled | Yes | Set a given Context to be enabled or not. If this is set to true then the Context is available for use. This argument allows for multiple Contexts to be defined while only having a sub-set of them be available for use. | enabled="true" |
| definition | Yes | One of the defined Definitions | definition="Person" |
| connection | Yes/No | A defined Connection. A Connection MUST either be defined at the Context level or within each Operation. If a Connection is defined in both locations, the Operation level Connection will be used. | connection="SunIdMgr" |
| association | Yes/No | A defined Association. An Association MUST either be defined at the Context level or within each Operation. If an Association is defined in both locations, the Operation level Association will be used. | association="SPML" |
Properties
| Be Careful If a Property has the same name as a Property from the higher-level Element (Contexts) ... it will be replaced with the Property at this level. |
| Name | Required | Description | Example Value |
|---|---|---|---|
| context.description | No | A description of the Context | Production SPML Context for a Person |
| operation.classname | No | The fully qualified name of a class that implements the OperationsIF. This Property is not actually used by the Context. If it is set at this level, the Context, it will be pushed to all of the Operations within the Context. Any (or all) of the Operations can set their own classname Property. An Operation will use it's own classname Property instead of the Context's classname | org.openptk.provision.spi.operations.SpmlSunOperations |
| key | No | The name of the Attribute that is designated as the unique identifier. This Property is not actually used by the Context. If it is set at this level, the Context, it will be pushed to all of the Operations within the Context. Any (or all) of the Operations can set their own key Property. An Operation will use it's own key Property instead of the Context's | uniqueid |
| objectclass | No | The objectclass for all the Operations within the Context. This Property is not actually used by the Context. If it is set at this level, the Context, it will be pushed to all of the Operations within the Context. Any (or all) of the Operations can set their own objectclass Property. An Operation will use it's own objectclass Property instead of the Context's | inetOrgPerson |
| timeout | No | Number of milliseconds an Operation should be allowed to process until it is stopped by the Context. This Property is used by the org.openptk.provision.common.TimeoutContext Context. If it is not set, the Context will use it's own internal default value. This Property is pushed to all Operations. An Operation can set (override) this Property. | 5000 |
Parent Element
Child Element(s)
*Query (optional: only one)
*Operations (required: one)
Contexts.Context.Query
The Query Element is used to define scoping of the Context. The Query is not actually used by the Context, it is made available to the Operations. The Context will create a OpenPTK Query object and automatically add it to the Operation(s). The Operation implementation may or may not use the Query Element. Please refer to the Java Docs for details on configuring Query objects.
Syntax
<!-- simple query --> <Query type="EQ" name="MemberObjectGroups" value="All People"/>
<!-- complex query --> <Query type="AND"> <Query type="EQ" name="MemberObjectGroups" serviceName="MemberObjectGroups" value="All People"/> <Query type="EQ" name="objectclass" value="user"/> </Query>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| type | Yes | The queries Type. Refer to the Java Docs for available Types. For a "Simple Query", the type will be a typical evaluation key word (such as "EQ"). For a "Complex Query", the type will use either "AND" or "OR" for keywords. | type="EQ" |
| name | Yes | The name of the value that's used for evaluation | name="objectClass" |
| value | Yes | The value that will be used for evaluation | value="inetOrgPerson" |
Properties
None
Parent Element
Child Element(s)
- (none)
Contexts.Context.Operations
Contains the allowed Operation implementations for the Context.
Syntax
<Operations> <Operation ...> ... </Operation> ... </Operations>
Arguments
None
Properties
None
Parent Element
Child Element(s)
- Operation (required: one or more)
Contexts.Context.Operations.Operation
An available Operation for the Context.
Syntax
<Operation id="search" attrgroup="..." connection="..." association="..."> <Properties> <Property name="classname" value="org.openptk.provision.spi.operations.JndiOperations"/> <Property name="key" value="uniqueid"/> <Property name="sort" value="lastname,firstname"/> </Properties> <Query type="EQ" name="objectClass" value="inetOrgPerson"/> </Operation>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | A valid Operation type: create,read,update,delete,search,pwdchange,pwdreset. | id="read" |
| attrgroup | Yes | A defined AttrGroup | attrgroup=person-read |
| connection | Yes/No | A defined Connection. A Connection MUST either be defined at the Context level or within each Operation. If a Connection is defined in both locations, the Operation level Connection will be used. | connection="OpenDS" |
| association | Yes/No | A defined Association. An Association MUST either be defined at the Context level or within each Operation. If an Association is defined in both locations, the Operation level Association will be used. | association="JNDI" |
Properties
Properties at this level will be merged with all of the Properties from the Context level. If a Property at this level has the same name as an existing Property, the Operation level (this) Property will replace it. Most of the Properties at this level are optional and may be specific to / required by the class that implements the Operation. Some commonly used Properties are listed below:
| Name | Required | Description | Example |
|---|---|---|---|
| classname | No | The fully qualified name of a class that implements the OperationsIF. | org.openptk.provision.spi.operations.SpmlSunOperations |
| key | No | The name of the Attribute that is designated as the unique identifier. | uniqueid |
| sort | Yes/No | A comma separated list of attribute names to define how the results of a search should be sorted. This really only applies to an Operation that has an id of search. | lastname,firstname |
Parent Element
Child Element(s)
- Query (optional: only one)
Contexts.Context.Operations.Operation.Query
The Query Element is used to define scoping of the Operation. A Query defined at this level, the Operation, will replace any existing Query that was defined at the Context level. A Query is optional, some Operation implementations may not need/use it.
Syntax
<!-- simple query --> <Query type="EQ" name="MemberObjectGroups" value="All People"/>
<!-- complex query --> <Query type="AND"> <Query type="EQ" name="MemberObjectGroups" serviceName="MemberObjectGroups" value="All People"/> <Query type="EQ" name="objectclass" value="user"/> </Query>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| type | Yes | The queries Type. Refer to the Java Docs for available Types. For a "Simple Query", the type will be a typical evaluation key word (such as "EQ"). For a "Complex Query", the type will use either "AND" or "OR" for keywords. | type="EQ" |
| name | Yes | The name of the value that's used for evaluation | name="objectClass" |
| value | Yes | The value that will be used for evaluation | value="inetOrgPerson" |
Properties
None
Parent Element
Child Element(s)
- (none)
Definitions
This section defines the available Definitions
Syntax
<Definitions> <Definition id="..."> ... </Definition> ... </Definitions>
Arguments
None
Properties
None
Parent Element
<OpenPTK>
Child Element(s)
Definitions.Definition
A Definition is an abstract object. It can be used to model (represent) many actual objects (Person, Role, Group, Computer, etc.)
Syntax
<Definition id="Person"> <Properties> <Property name="definition.classname" value="org.openptk.provision.api.Person"/> <Property name="definition.description" value="A generic employee,customer,consultant"/> <Property name="definition.password" value="password"/> <Property name="definition.role" value="Roles"/> </Properties> <Attributes> <Attribute id="..."> ... </Attributes> </Definition>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | A unique identifier for the Definition | id="Person" |
Properties
| Name | Required | Description | Example |
|---|---|---|---|
| classname | Yes | The fully qualified name of a Class that implements the Subject interface | Person |
Parent
Child Element(s)
Definitions.Definition.Attributes
This section defines the available Attributes for a Definition
Syntax
<Attributes> <Attribute ...> ... </Attribute> ... </Attributes>
Arguments
None
Properties
None
Parent
Child Element(s)
Definitions.Definition.Attributes.Attribute
An Attribute is related to a Definition.
Syntax
<Attribute id="fullname" required="true"> <Functions> <Function id="OutConcat"> </Function> ... </Functions> </Attribute>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | The unique identifier for the Attribute | id="firstname" |
| required | No | Flags the Attribute as being required. Valid settings are true or false. The default value is false. If the setting is true, then one of two things could happen. If there is a Function then it will be used to automatically generate a value for the Attribute. If there is not a Function then an error is returned to the Consumer Tier application. | true |
| virtual | No | Used to indicate that the Attribute only exists in the OpenPTK Framework. There is no "real" attribute in the Service/Operation back-end user repository. The default value is false | virtual="true" |
| type | No | Defines the data type for the Attribute. Valid settings are: String,Integer,Boolean,Object. If not set, the default value is String | String |
| encrypted | No | Indicates that the data within the Attribute is encrypted. Valid settings are true and false. The default setting is false. Note: This flag is currently not being used. | encrypted="true" |
| multivalued | No | Determines if an Attribute supports multi-values. The default value is false | false |
| access | No | Defines what parts of the Framework should have "access" to the Attribute. Valid settings are public and private. The default setting is public. When set to public the Attribute is available to the internal Framework and to the Consumer Tier applications. When set to private the Attribute is only available to the internal Framework. private Attributes are typically used for Functions where they are used only for internal operations but should not be made available to the Consumer Tier applications (such as a users password). Note: This flag is currently not being used. | access="private" |
Properties
None
Parent Element
Child Element(s)
- Functions (ooptional: none or only one)
Definitions.Definition.Attributes.Attribute.Functions
A collection of Functions related to an Attribute.
Syntax
</Functions> <Function id="..."> ... </Function> ... <Functions>
Arguments
None
Properties
None
Parent
Child Element(s)
Definitions.Definition.Attributes.Attribute.Functions.Function
A Function is used to automatically derive and/or validate the Attribute. There can be multiple Functions. Each Functions will be processed in the order in which they are defined in the config file. The Function will be activated under one or both of these two conditions:
- The Consumer Tier applications adds the Attribute to the Input object.
- The Attribute has the argument required set to true.
Syntax
<Function id="InConcat" useexisting="true" classname="org.openptk.provision.definition.functions.ConcatStrings"> <Arguments> <Argument name="arg1" type="attribute" value="firstname"/> <Argument name="arg2" type="literal" value=" "/> <Argument name="arg3" type="attribute" value="lastname"/> </Arguments> <Operations> <Operation type="create"/> <Operation type="update"/> </Operations> </Function>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | I unique identifier for a given Function. | id="emailaddress" |
| classname | Yes | A fully qualified Java classname that implements the Function Interface | classname="org.openptk.provision.transform.ConcatStrings" |
| useexisting | No | This is a flag to the Framework. The default setting is false. Valid settings are true and false. If the setting is true then the Function will look to see if the Attribute already has a value. If it has a value then the Function will NOT be used and the provided "existing" value will be used. | useexisting="true" |
Properties
None
Parent Element
Child Elements
Definitions.Definition.Attributes.Attribute.Functions.Function.Operations
Operations contain one or more Operation Elements that define when to apply a Function to an Attribute.
Syntax
<Operations> <Operation type="create"/> <Operation type="update"/> ... </Operations>
Arguments
None
Properties
None
Parent Element
Child Element(s)
Definitions.Definition.Attributes.Attribute.Functions.Function.Operations.Operation
Valid Operation types include:
- create
- read
- update
- delete
- search
- pwdchange
- pwdreset
Syntax
<Operation type="..."/>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| type | Yes | The name of the operation. There is no default value. | type="read" |
Properties
None
Parent Element
Child Element(s)
None
Definitions.Definition.Attributes.Attribute.Functions.Function.Arguments
Syntax
<Arguments> <Argument .../> ... </Arguments>
Arguments
None
Properties
None
Parent Element
Child Element(s)
Definitions.Definition.Attributes.Attribute.Functions.Function.Arguments.Argument
Arguments are used by the Function implementation. There are two types of Arguments:
| arg | description |
|---|---|
| attribute | The value is a name of an Attribute and it's value is assigned to the name of the Argument |
| literal | The value is treated as a constant string and is assigned to the name of the Argument |
Syntax
<Arguments> <Argument name="first" type="attribute" value="firstname"/> <Argument name="dot" type="literal" value="."/> <Argument name="last" type="attribute" value="lastname"/> <Argument name="at" type="literal" value="@"/> <Argument name="domainname" type="literal" value="openptk.org"/> </Arguments>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| name | Yes | A unique name for the Argument | name="first" |
| type | Yes | The argument type. The value must be either literal or attribute | type="attribute" |
| value | Yes | The value of the Argument. | value="firstname" |
Parent Element
Child Element(s)
None
AttrGroups
Contains one or more AttrGroup Elements
Syntax
<AttrGroups> <AttrGroup ...> ... </AttrGroup> ... </AttrGroups>
Arguments
None
Properties
None
Parent Element
OpenPTK
Child Element(s)
AttrGroups.AttrGroup
An AttrGroup defines a collection of Attributes, which are used by a given Operations
Syntax
<AttrGroup id="..."> <Attributes> ... </Attributes> </AttrGroup>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | I unique identifier for a given AttrGroup. | id="person-read" |
Properties
None
Parent Element
Child Element(s)
AttrGroups.AttrGroup.Attributes
A collection of one or more Attribute Elements
Syntax
<Attributes> <Attribute id="firstname"/> <Attribute id="lastname"/> <Attribute id="email"/> <Attribute .../> ... </Attributes>
Arguments
None
Properties
None
Parent Element
Child Element(s)
AttrGroups.AttrGroup.Attributes.Attribute
An Element that matches a valid Attribute
Syntax
<Attribute id="..."/>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | The name of a valid Attribute. | id="lastname" |
Properties
None
Parent Element
Child Element(s)
None
Associations
Associations map OpenPTK Framework Attribute names to Service Attribute names. Framework Attributes NOT listed in a given Association will be treated as "pass through", their Framework Attribute name will be used for their Service Attribute name.
Syntax
<Associations> <Association id="..."> ... </Association> ... </Associations>
Arguments
None
Properties
None
Parent Element
OpenPTK
Child Element(s)
Associations.Association
An Association, maps Framework names to Service specific names
Syntax
<Association id="..."> <Attributes> ... </Attributes> </Association>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | A unique name used to reference the Association. This id is used as part of defining a Context | id="JNDI" |
Properties
None
Parent Element
Child Element(s)
Associations.Association.Attributes
The collection of Attribute Elements defined within the Association
Syntax
<Attributes> <Attribute .../> <Attribute ...> </Attribute> ... </Attributes>
Arguments
None
Parent Element
Child Element(s)
Associations.Association.Attributes.Attribute
A valid Attribute. If the servicename is not set, the Framework name, id, will be used as the Service name.
Syntax
<Attribute id="..." servicename="..."> <Functions> ... </Functions> </Attribute>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | The unique identifier for the Attribute | id="firstname" |
| servicename | No | The Service name of the Attribute. | servicename="gn" |
| required | No | Flags the Attribute as being required. Valid settings are true or false. The default value is false. If the setting is true, then one of two things could happen. If there is a Function then it will be used to automatically generate a value for the Attribute. If there is not a Function then an error is returned to the Consumer Tier application. | true |
Properties
None
Parent Element
Child Element(s)
Associations.Association.Attributes.Attribute.Functions
A collection of Functions related to an Attribute.
Syntax
</Functions> <Function id="..."> ... </Function> ... <Functions>
Arguments
None
Properties
None
Parent
Child Element(s)
Associations.Association.Attributes.Attribute.Functions.Function
A Function is used to automatically derive and/or validate the Attribute. There can be multiple Functions. Each Functions will be processed in the order in which they are defined in the config file. The Function will be activated under one or both of these two conditions:
- The Consumer Tier applications adds the Attribute to the Input object.
- The Attribute has the argument required set to true.
Syntax
<Function id="InConcat" useexisting="true" classname="org.openptk.provision.definition.functions.ConcatStrings"> <Arguments> <Argument name="arg1" type="attribute" value="firstname"/> <Argument name="arg2" type="literal" value=" "/> <Argument name="arg3" type="attribute" value="lastname"/> </Arguments> <Operations> <Operation type="create"/> <Operation type="update"/> </Operations> </Function>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | I unique identifier for a given Function. | id="emailaddress" |
| classname | Yes | A fully qualified Java classname that implements the Function Interface | classname="org.openptk.provision.transform.ConcatStrings" |
| useexisting | No | This is a flag to the Framework. The default setting is false. Valid settings are true and false. If the setting is true then the Function will look to see if the Attribute already has a value. If it has a value then the Function will NOT be used and the provided "existing" value will be used. | useexisting="true" |
Properties
None
Parent Element
Child Elements
Associations.Association.Attributes.Attribute.Functions.Function.Operations
Operations contain one or more Operation Elements that define when to apply a Function to an Attribute.
Syntax
<Operations> <Operation type="create"/> <Operation type="update"/> ... </Operations>
Arguments
None
Properties
None
Parent Element
Child Element(s)
Associations.Association.Attributes.Attribute.Functions.Function.Operations.Operation
Valid Operation types include:
- create
- read
- update
- delete
- search
- pwdchange
- pwdreset
Syntax
<Operation type="..."/>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| type | Yes | The name of the operation. There is no default value. | type="read" |
Properties
None
Parent Element
Child Element(s)
None
Associations.Association.Attributes.Attribute.Functions.Function.Arguments
Syntax
<Arguments> <Argument .../> ... </Arguments>
Arguments
None
Properties
None
Parent Element
Child Element(s)
Associations.Association.Attributes.Attribute.Functions.Function.Arguments.Argument
Arguments are used by the Function implementation. There are two types of Arguments:
| arg | description |
|---|---|
| attribute | The value is a name of an Attribute and it's value is assigned to the name of the Argument |
| literal | The value is treated as a constant string and is assigned to the name of the Argument |
Syntax
<Arguments> <Argument name="first" type="attribute" value="firstname"/> <Argument name="dot" type="literal" value="."/> <Argument name="last" type="attribute" value="lastname"/> <Argument name="at" type="literal" value="@"/> <Argument name="domainname" type="literal" value="openptk.org"/> </Arguments>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| name | Yes | A unique name for the Argument | name="first" |
| type | Yes | The argument type. The value must be either literal or attribute | type="attribute" |
| value | Yes | The value of the Argument. | value="firstname" |
Parent Element
Child Element(s)
None
Connections
A collection of Connection Elements. All of the Connections will use the same Service Manager class that implements the ServiceIF Interface.
Syntax
<Connections> <Properties> <Property name="service.classname" value="org.openptk.provision.spi.BasicService"/> </Properties> <Connection ...> ... </Connection .../> ... </Connections>
Arguments
None
Properties
| Name | Required | Description | Example |
|---|---|---|---|
| service.classname | Yes | The fully qualified name of a Class that implements the Service interface. This Service Manager will be used for all Connections. | org.openptk.provision.spi.BasicService |
Parent Element
OpenPTK
Child Element(s)
Connections.Connection
A Connection defines information that is specific back-end to a Subject repository. The Properties defined in a given Connection are specific to that Connection. They are passed on to the Service/Operation(s) when they are created.
The actual classname that implements the Service's Operations is set in the Context. It is defined as a Property at the Context level or at the Operation level (within the Context).
Syntax
<Connection id="OpenDS"> <Properties> <Property name="connection.description" value="OpenDS 1.0"/> <Property name="..." value="..."/> ... </Properties> </Connection>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | A unique id for the Service. This is as part of defining a Context | id="OpenDS" |
Properties
| Name | Required | Description | Example |
|---|---|---|---|
| connection.description | No | Describes the Connection, passed to the class when created | OpenDS 1.0.0 |
| url | No | A proper URL for how to connect to the Service/Operations | ldap://localhost:1389 |
| user.name | No | The name of the Proxy user that will be used to authenticate | cn=Directory Manager |
| user.password | No | The password for the Proxy user | Hello World |
| Certain Services may require other Properties. |
Parent Element
Child Element(s)
None
Loggers
A collection of Logger Elements
Syntax
<Loggers> <Logger ..../> ... </Loggers>
Arguments
None
Properties
None
Parent Element
OpenPTK
Child Element(s)
Loggers.Logger
A Logger is used to capture INFO, WARNING, ERROR, and DEBUG messages.
Syntax
<Loggers> <Logger id="UnixLogFile" classname="org.openptk.provision.logging.AtomicLogger"> <Properties> <Property name="file" value="/var/tmp/openptk.log"/> </Properties> </Logger> ... </Loggers>
Arguments
| Name | Required | Description | Example |
|---|---|---|---|
| id | Yes | A unique identifier for the Logger | id="MyLogger" |
| classname | Yes | The fully qualified classname that implements the Loggin interface. | classname="org.openptk.provision.logging.AtomicLogger" |
Properties
| Name | Required | Description | Example |
|---|---|---|---|
| file | Yes | path to log file. | /var/tmp/openptk.log |
| Certain Loggers may require other Properties. |
Parent Element
Child Element(s)
None