Hello, amigos!

There are two things I would like to ask advice for:

1.    I would like to validate the XML configuration file for log4cxx in the 
project I am using.
There is a "log4j.dtd" document in the 0.9.8 version from SVN which should 
serve this purpose.
The thing with this DTD is that there is no definition for an element named 
"rollingPolicy" inside an "appender" element. This is observable by looking 
inside the DTD; we've tried to validate the XML configuration with Eclipse and 
its XML plugin and the result was the following:
    The content of element type "appender" must match 
     "(errorHandler?,param*,layout?,filter*,appender-ref*)".

Is there something missing in the DTD file? The logger functions alright with 
the "rollingPolicy" element included in the XML configuration. So, this seems 
to be correctly specified.

!!! I need to mention that the use of a PROPERTIES file in the case of having 
ANY kind of policies for logging (time based policies, rolling policies..) is 
not advisable as it seems that the policies don't work with other types of 
config files, but XML config files. This might be another issue....
I have read this on a log4cxx related discussion, but unfortunately I can't 
tell you where and I can't provide a link.

2.    Could anyone confirm the following being correct in the XML config file 
for log4cxx?...

<param name="Encoding" value="UTF-16"/>

I am using this to change the encoding of the log files to Unicode (the 
intention is to display Japanese, Arabic and other types of characters from 
other character sets) inside the <appender> ... </appender> element in the XML 
file.

Thank you very much!
Have a wonderful day, you all!

Sorin Popa
Romania
Mobile:    +40 728 030299


The XML configuration file - log4cxx.xml
----------------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC "log4j.dtd">

http://jakarta.apache.org/log4j/' debug="false">
    <appender name="DRFA" class="org.apache.log4j.rolling.RollingFileAppender">
    <param name="Append" value="true"/>
    <param name="Encoding" value="UTF-16" />
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="FileNamePattern" 
value="C:\server_unicode.%d{yyyyMMdd}.log"/>
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{HH:mm:ss.SSS} [%-5p] 
%c{1} - %m%n"/>
    </layout>
    </appender> 
    <root>
        <level value="DEBUG"/>
        <appender-ref ref="DRFA"/>
    </root>
</log4j:configuration>


The DTD file - log4j.dtd   (file taken from log4cxx 0.9.8 SVN repository)
----------------------------------------------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>

<!-- Authors: Chris Taylor, Ceki Gulcu. -->

<!-- Version: 1.2 -->

<!-- A configuration element consists of optional renderer
elements,appender elements, categories and an optional root
element. -->

<!ELEMENT log4j:configuration (renderer*, appender*,(category|logger)*,root?,
                               categoryFactory?)>

<!-- The "threshold" attribute takes a level value such that all -->
<!-- logging statements with a level equal or below this value are -->
<!-- disabled. -->

<!-- Setting the "debug" enable the printing of internal log4j logging   -->
<!-- statements.                                                         -->

<!-- By default, debug attribute is "null", meaning that we not do touch -->
<!-- internal log4j logging settings. The "null" value for the threshold -->
<!-- attribute can be misleading. The threshold field of a repository     -->
<!-- cannot be set to null. The "null" value for the threshold attribute -->
<!-- simply means don't touch the threshold field, the threshold field   --> 
<!-- keeps its old value.                                                -->
     
<!ATTLIST log4j:configuration
  xmlns:log4j              CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
  threshold                (all|debug|info|warn|error|fatal|off|null) "null"
  debug                    (true|false|null)  "null"
>

<!-- renderer elements allow the user to customize the conversion of  -->
<!-- message objects to String.                                       -->

<!ELEMENT renderer EMPTY>
<!ATTLIST renderer
  renderedClass  CDATA #REQUIRED
  renderingClass CDATA #REQUIRED
>

<!-- Appenders must have a name and a class. -->
<!-- Appenders may contain an error handler, a layout, optional parameters -->
<!-- and filters. They may also reference (or include) other appenders. -->
<!ELEMENT appender (errorHandler?, param*, layout?, filter*, appender-ref*)>
<!ATTLIST appender
  name         ID     #REQUIRED
  class     CDATA    #REQUIRED
>

<!ELEMENT layout (param*)>
<!ATTLIST layout
  class        CDATA    #REQUIRED
>

<!ELEMENT filter (param*)>
<!ATTLIST filter
  class        CDATA    #REQUIRED
>

<!-- ErrorHandlers can be of any class. They can admit any number of -->
<!-- parameters. -->

<!ELEMENT errorHandler (param*, root-ref?, logger-ref*,  appender-ref?)> 
<!ATTLIST errorHandler
   class        CDATA   #REQUIRED 
>

<!ELEMENT root-ref EMPTY>

<!ELEMENT logger-ref EMPTY>
<!ATTLIST logger-ref
  ref IDREF #REQUIRED
>

<!ELEMENT param EMPTY>
<!ATTLIST param
  name        CDATA   #REQUIRED
  value        CDATA    #REQUIRED
>


<!-- The priority class is org.apache.log4j.Level by default -->
<!ELEMENT priority (param*)>
<!ATTLIST priority
  class   CDATA    #IMPLIED
  value      CDATA #REQUIRED
>

<!-- The level class is org.apache.log4j.Level by default -->
<!ELEMENT level (param*)>
<!ATTLIST level
  class   CDATA    #IMPLIED
  value      CDATA #REQUIRED
>


<!-- If no level element is specified, then the configurator MUST not -->
<!-- touch the level of the named category. -->
<!ELEMENT category (param*,(priority|level)?,appender-ref*)>
<!ATTLIST category
  class         CDATA   #IMPLIED
  name        CDATA    #REQUIRED
  additivity    (true|false) "true"  
>

<!-- If no level element is specified, then the configurator MUST not -->
<!-- touch the level of the named logger. -->
<!ELEMENT logger (level?,appender-ref*)>
<!ATTLIST logger
  name        ID    #REQUIRED
  additivity    (true|false) "true"  
>


<!ELEMENT categoryFactory (param*)>
<!ATTLIST categoryFactory 
   class        CDATA #REQUIRED>

<!ELEMENT appender-ref EMPTY>
<!ATTLIST appender-ref
  ref IDREF #REQUIRED
>

<!-- If no priority element is specified, then the configurator MUST not -->
<!-- touch the priority of root. -->
<!-- The root category always exists and cannot be subclassed. -->
<!ELEMENT root (param*, (priority|level)?, appender-ref*)>


<!-- ==================================================================== -->
<!--                       A logging event                                -->
<!-- ==================================================================== -->
<!ELEMENT log4j:eventSet (log4j:event*)>
<!ATTLIST log4j:eventSet
  xmlns:log4j             CDATA #FIXED "http://jakarta.apache.org/log4j/"; 
  version                (1.1|1.2) "1.2" 
  includesLocationInfo   (true|false) "true"
>



<!ELEMENT log4j:event (log4j:message, log4j:NDC?, log4j:throwable?, 
                       log4j:locationInfo?) >

<!-- The timestamp format is application dependent. -->
<!ATTLIST log4j:event
    logger     CDATA #REQUIRED
    level      CDATA #REQUIRED
    thread     CDATA #REQUIRED
    timestamp  CDATA #REQUIRED
>

<!ELEMENT log4j:message (#PCDATA)>
<!ELEMENT log4j:NDC (#PCDATA)>

<!ELEMENT log4j:throwable (#PCDATA)>

<!ELEMENT log4j:locationInfo EMPTY>
<!ATTLIST log4j:locationInfo
  class  CDATA    #REQUIRED
  method CDATA    #REQUIRED
  file   CDATA    #REQUIRED
  line   CDATA    #REQUIRED
>






 
____________________________________________________________________________________
Have a burning question?  
Go to www.Answers.yahoo.com and get answers from real people who know.

Reply via email to