Example: WCALoggerConfig.xml and WCALogger.dtd

WCALoggerConfig.xml

  <?xml version="1.0" standalone="no"?>
  <!DOCTYPE WCALoggerConfig SYSTEM "WCALogger.dtd">
  <WCALoggerConfig>
  <component name="MassLoader">
   <logger type="message">
    <handler type="file">
     <filePath>c:\temp\out.txt</filePath>
      <filter type="Any">
       <messageType name="FATAL"/>
       <messageType name="ERROR"/>
       <messageType name="WARNING"/>
       <messageType name="INFO"/>
      </filter>
     </handler>
    </logger>
   <logger type="trace">
    <handler type="file">
     <filePath>out2.txt</filePath>
      <filter type="Any">
       <messageType name="PUBLIC"/>
      </filter>
    </handler>
   </logger>
   <logger type="typedMessage">
    <handler type="file">
     <filePath>tout.txt</filePath>
      <filter type="Any">
       <messageType name="FATAL"/>
       <messageType name="ERROR"/>
       <messageType name="WARNING"/>
       <messageType name="INFO"/>
      </filter>
    </handler>
   </logger>
   <logger type="progress">
    <handler type="console" format="safe">
     <filter type="Any">
       <messageType name="FATAL"/>
       <messageType name="ERROR"/>
       <messageType name="WARNING"/>
       <messageType name="INFO"/>
     </filter>
    </handler>
   </logger>
  </component>
  <component name="DTDGenerator">
   <logger type="message">
    <handler type="console">
     <filter type="Any">
       <messageType name="FATAL"/>
       <messageType name="ERROR"/>
       <messageType name="WARNING"/>
       <messageType name="INFO"/>
     </filter>
    </handler>
   </logger>
   <logger type="trace">
    <handler type="console">
     <filter type="Any">
       <messageType name="FATAL"/>
       <messageType name="ERROR"/>
       <messageType name="WARNING"/>
       <messageType name="INFO"/>
     </filter>
    </handler>
   </logger>
  </component>
  </WCALoggerConfig>

WCALogger.dtd

  <!-- This DTD describes how a WCALoggerConfig XML can be structured.
  A WCALoggerConfig XML document is the input configuration file for
  the WCALoggerFactory class.
  -->

  <!ELEMENT WCALoggerConfig (component)+>

  <!ELEMENT component (logger)+>
  <!ATTLIST component name CDATA #REQUIRED>
  <!ELEMENT logger (handler+,messageFile?)>
  <!ATTLIST logger type (message | trace | typedMessage | progress) "typedMessage">

  <!-- messageFile is an optional default properties files that can be used to 
  make messages locale specific
  -->
  <!ELEMENT messageFile (#PCDATA)>
  <!ELEMENT handler (filePath?, filter, jdbc?)>
  <!ATTLIST handler
  type ( file|multiFile|console|error|textArea|database|ejbQueue|queue ) "console">

  <!-- maxFiles & maxKBFileSize only applies to the multiFile type of handler
  -->
  <!-- filePath & encoding applies only when the handler is of type file or 
  multiFile
  -->
  <!ATTLIST handler maxFiles CDATA #IMPLIED>
  <!ATTLIST handler maxKBFileSize CDATA #IMPLIED>
  <!ATTLIST handler encoding CDATA #IMPLIED>
  <!ATTLIST handler format (safe | xml) "safe">
  <!-- maxRecords & brand are only applicable to database handler type
  -->
  <!ATTLIST handler maxRecords CDATA #IMPLIED>
  <!ATTLIST handler brand (DB2) #IMPLIED>
  <!-- the jdbc tag must be present within a database handler type tag
  -->
  <!ELEMENT jdbc EMPTY>
  <!ATTLIST jdbc url CDATA #IMPLIED>
  <!ATTLIST jdbc table CDATA #IMPLIED>
  <!ATTLIST jdbc userid CDATA #IMPLIED>
  <!ATTLIST jdbc password CDATA #IMPLIED>

  <!ELEMENT filter (messageType+)>
  <!ATTLIST filter type (Any | All | Exclude ) "Any">

  <!-- the messageType attribute name is one of these JLog IRecordType 
  constants
  -->
  <!ELEMENT messageType EMPTY>
  <!ATTLIST messageType name ( NONE | ALL | INFO |
  INFORMATION | WARN | WARNING | ERR | ERROR |
  FATAL | DEFAULT_MESSAGE | API | CALLBACK |
  ENTRY_EXIT | ENTRY | EXIT | ERROR_EXC |
  MISC_DATA | OBJ_CREATE | OBJ_DELETE |
  PRIVATE | PUBLIC | STATIC | SVC | PERF |
  LEVEL1 | LEVEL2 | LEVEL3 ) "ALL">
  <!ELEMENT filePath (#PCDATA)>

Feedback