# Default to info level output; this is very handy if you eventually use Hibernate as well.
log4j.rootCategory=info, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%p] %c{2} %m%n

# Service category names are the name of the defining module class
# and then the service id.
log4j.category.${package}.services.AppModule.TimingFilter=info

# Outputs a list of pages, components and mixins at startup.
log4j.category.org.apache.tapestry5.modules.TapestryModule.ComponentClassResolver=info

# Outputs startup statistics; elapsed time to setup and initialize the registry, a list of
# available services, and a launch banner that includes the Tapestry version number.
log4j.category.org.apache.tapestry5.TapestryFilter=info


# Turning on debug mode for a page's or component's transformer logger
# will show all of the code changes that occur when the
# class is loaded.

# log4j.category.tapestry.transformer.${package}.pages.Index=debug

# Turning on debug mode for a component's events logger will show all the events triggered on the
# component, and which component methods are invoked as a result.

# log4j.category.tapestry.events.${package}.pages.Index=debug

# Turning on trace mode for a page's render logger provides extended information about every step
# in rendering (this is not generally helpful).  Turning on debug mode will add a one-line
# summary that includes the elapsed render time, which can be useful in tracking down
# performance issues.

# log4j.category.tapestry.render.${package}.pages.Index=debug

# Turn on some verbose debugging about everything in the application. This is nice initially,
# while getting everything set up.  You'll probably want to remove this once you are 
# up and running, replacing it with more selective debugging output.
log4j.category.${package}=debug