Re: Why There isn't a Log File?
You can use an XML config file just fine under Tomcat (with caveats... see below). I see two issues with your current XML config, though 1. The doctype should be... !DOCTYPE log4j:configuration SYSTEM log4j.dtd 2. The path in... param name=File value=c:\myproj\myapp\logs\mylog.log / ...should be either... param name=File value=c:\\myproj\\myapp\\logs\\mylog.log / ...or... param name=File value=c:/myproj/myapp/logs/mylog.log / I mentioned a caveat above about using XML config files in Tomcat. By that, I mean using it specifically for Tomcat logging, not just general application logging. You can, unless you choose to reference Tomcat loggers named using square brackets, as they are disallowed by the DTD. For instance, to reference Tomcat's localhost logger, you'd use... org.apache.catalina.core.ContainerBase.[Catalina].[localhost] Using XML, it would be... logger name=org.apache.catalina.core.ContainerBase.[Catalina].[localhost] additivity=false level value=INFO/ appender-ref ref=LOCALHOST/ /logger But the name doesn't attribute doesn't allow square brackets and the config file fails DTD validation because the name attribute is defined as type ID. That said, I think there might be a workaround. If you use the deprecated category rather than logger it might work because, for the former, the name attribute is of type CDATA rather than ID. So, all you'd have to do is use... category name=org.apache.catalina.core.ContainerBase.[Catalina].[localhost] additivity=false level value=INFO/ appender-ref ref=LOCALHOST/ /category Try that and see if it works. Jake On 3/30/2011 11:15 AM, Cindy Wong wrote: To answer my own question, according to Tomcat document, the problem is with TC. I need to use the property configuration file format instead. I have used log4j before with the property file configuration. For this new project, I have the XML configuration. The console output seems to be fine. Any changes on log level and layout will reflect on log messages on the console right away. I, however, can't get any log file for some reasons. To my understanding, to use a log file, I need to use the log4j-user-subscr...@logging.apache.org class and what is the name is important. The followings are the xml configuration and the dtd. Can someone tell me what is wrong? ?xml version=1.0 encoding=UTF-8? !-- !DOCTYPE log4j:configuration PUBLIC -//LOGGER log4j.dtd -- !DOCTYPE log4j:configuration PUBLIC -//log4j/log4j Configuration//EN log4j.dtd log4j:configuration xmlns:log4j=http://jakarta.apache.org/log4j/; !-- log4j:configuration debug=true -- !-- Appenders -- appender name=console class=org.apache.log4j.ConsoleAppender param name=Target value=System.out / layout class=org.apache.log4j.PatternLayout param name=ConversionPattern value=%-5p: %c{1}:%L - %m%n / /layout /appender appender name=file class=org.apache.log4j.RollingFileAppender param name=maxFileSize value=100KB / param name=maxBackupIndex value=5 / param name=File value=c:\myproj\myapp\logs\mylog.log / param name=Append value=true / layout class=org.apache.log4j.PatternLayout param name=ConversionPattern value=%d %-5p [%t] %C{2} (%F:%L) - %m%n/ /layout /appender !-- Application Loggers -- logger name=com.mycom.myapp level value=debug / /logger !-- 3rdparty Loggers -- ... !-- Root Logger -- root priority value=warn / appender-ref ref=console / /root /log4j:configuration ?xml version=1.0 encoding=UTF-8 ? !-- 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
Re: Why There isn't a Log File?
Cindy, I have successfully run Tomcat using either properties or xml. I was forced to use xml, when I decided to try use Chainsaw. But it worked. On Mar 30, 2011 1:15 PM, Cindy Wong cw...@pu-gong-ying.info wrote: To answer my own question, according to Tomcat document, the problem is with TC. I need to use the property configuration file format instead. I have used log4j before with the property file configuration. For this new project, I have th... Spam/Virus scanning by CanIt Pro For more information see http://www.kgbinternet.com/SpamFilter.htm To control your spam filter, log in at http://filter.kgbinternet.com - To unsubscribe, e-mail: l...
Re: Why There isn't a Log File?
To answer my own question, according to Tomcat document, the problem is with TC. I need to use the property configuration file format instead. I have used log4j before with the property file configuration. For this new project, I have the XML configuration. The console output seems to be fine. Any changes on log level and layout will reflect on log messages on the console right away. I, however, can't get any log file for some reasons. To my understanding, to use a log file, I need to use the log4j-user-subscr...@logging.apache.org class and what is the name is important. The followings are the xml configuration and the dtd. Can someone tell me what is wrong? ?xml version=1.0 encoding=UTF-8? !-- !DOCTYPE log4j:configuration PUBLIC -//LOGGER log4j.dtd -- !DOCTYPE log4j:configuration PUBLIC -//log4j/log4j Configuration//EN log4j.dtd log4j:configuration xmlns:log4j=http://jakarta.apache.org/log4j/; !-- log4j:configuration debug=true -- !-- Appenders -- appender name=console class=org.apache.log4j.ConsoleAppender param name=Target value=System.out / layout class=org.apache.log4j.PatternLayout param name=ConversionPattern value=%-5p: %c{1}:%L - %m%n / /layout /appender appender name=file class=org.apache.log4j.RollingFileAppender param name=maxFileSize value=100KB / param name=maxBackupIndex value=5 / param name=File value=c:\myproj\myapp\logs\mylog.log / param name=Append value=true / layout class=org.apache.log4j.PatternLayout param name=ConversionPattern value=%d %-5p [%t] %C{2} (%F:%L) - %m%n/ /layout /appender !-- Application Loggers -- logger name=com.mycom.myapp level value=debug / /logger !-- 3rdparty Loggers -- ... !-- Root Logger -- root priority value=warn / appender-ref ref=console / /root /log4j:configuration ?xml version=1.0 encoding=UTF-8 ? !-- 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 nameID #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 classCDATA #REQUIRED !ELEMENT root-ref EMPTY !ELEMENT logger-ref EMPTY !ATTLIST logger-ref ref IDREF #REQUIRED !ELEMENT param EMPTY !ATTLIST param nameCDATA #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
Why There isn't a Log File?
I have used log4j before with the property file configuration. For this new project, I have the XML configuration. The console output seems to be fine. Any changes on log level and layout will reflect on log messages on the console right away. I, however, can't get any log file for some reasons. To my understanding, to use a log file, I need to use the log4j-user-subscr...@logging.apache.org class and what is the name is important. The followings are the xml configuration and the dtd. Can someone tell me what is wrong? ?xml version=1.0 encoding=UTF-8? !-- !DOCTYPE log4j:configuration PUBLIC -//LOGGER log4j.dtd -- !DOCTYPE log4j:configuration PUBLIC -//log4j/log4j Configuration//EN log4j.dtd log4j:configuration xmlns:log4j=http://jakarta.apache.org/log4j/; !-- log4j:configuration debug=true -- !-- Appenders -- appender name=console class=org.apache.log4j.ConsoleAppender param name=Target value=System.out / layout class=org.apache.log4j.PatternLayout param name=ConversionPattern value=%-5p: %c{1}:%L - %m%n / /layout /appender appender name=file class=org.apache.log4j.RollingFileAppender param name=maxFileSize value=100KB / param name=maxBackupIndex value=5 / param name=File value=c:\myproj\myapp\logs\mylog.log / param name=Append value=true / layout class=org.apache.log4j.PatternLayout param name=ConversionPattern value=%d %-5p [%t] %C{2} (%F:%L) - %m%n/ /layout /appender !-- Application Loggers -- logger name=com.mycom.myapp level value=debug / /logger !-- 3rdparty Loggers -- ... !-- Root Logger -- root priority value=warn / appender-ref ref=console / /root /log4j:configuration ?xml version=1.0 encoding=UTF-8 ? !-- 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 classCDATA #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