| <?xml version="1.0"?> |
| <!-- |
| /* |
| * Copyright 2001-2004 The Apache Software Foundation. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| --> |
| |
| <document> |
| |
| <properties> |
| <title>Turbine Services - Logging Service</title> |
| </properties> |
| |
| <body> |
| |
| <section name="Logging Service"> |
| |
| <p> |
| Turbine's logging service is exceptionally powerful. And it was |
| proprietary. So we ripped it out post Turbine 2.2 and replaced it with |
| <a href="http://jakarta.apache.org/commons/logging">commons-logging</a> |
| backed by <a href="http://jakarta.apache.org/log4j/">Log4j</a>. You |
| configure the new logging with a Log4j.properties file which can be |
| configured with the log4j.file property in TurbineResource.properties: |
| </p> |
| |
| </section> |
| |
| <section name="Configuration"> |
| |
| <source><![CDATA[ |
| # ------------------------------------------------------------------- |
| # |
| # L O G 4 J - L O G G I N G |
| # |
| # ------------------------------------------------------------------- |
| |
| log4j.file = /WEB-INF/conf/Log4j.properties |
| ]]></source> |
| |
| </section> |
| |
| <section name="Log4j Configuration"> |
| |
| <p> |
| To use the Logging system, all you need to do is configure some |
| loggers in your Log4j.properties. This is an example how to do it: |
| </p> |
| |
| <source><![CDATA[ |
| # ------------------------------------------------------------------------ |
| # |
| # Logging Configuration |
| # |
| # $Id$ |
| # |
| # ------------------------------------------------------------------------ |
| |
| # |
| # If we don't know the logging facility, put it into the |
| # turbine.log |
| # |
| log4j.rootLogger = INFO, turbine |
| |
| # |
| # Turbine goes into Turbine Log |
| # |
| log4j.category.org.apache.turbine = INFO, turbine |
| log4j.additivity.org.apache.turbine = false |
| |
| # |
| # Torque has its own log file |
| # |
| log4j.category.org.apache.torque = INFO, torque |
| log4j.additivity.org.apache.torque = false |
| |
| # |
| # Velocity Logfile |
| # |
| log4j.category.velocity = INFO, velocity |
| log4j.additivity.velocity = false |
| |
| # |
| # Scheduler Category |
| # |
| log4j.category.scheduler = INFO, scheduler |
| log4j.additivity.scheduler = false |
| |
| ######################################################################## |
| # |
| # Logfile definitions |
| # |
| ######################################################################## |
| |
| # |
| # turbine.log |
| # |
| log4j.appender.turbine = org.apache.log4j.FileAppender |
| log4j.appender.turbine.file = ${applicationRoot}/logs/turbine.log |
| log4j.appender.turbine.layout = org.apache.log4j.PatternLayout |
| log4j.appender.turbine.layout.conversionPattern = %d [%t] %-5p %c - %m%n |
| log4j.appender.turbine.append = false |
| |
| # |
| # torque.log |
| # |
| log4j.appender.torque = org.apache.log4j.FileAppender |
| log4j.appender.torque.file = ${applicationRoot}/logs/torque.log |
| log4j.appender.torque.layout = org.apache.log4j.PatternLayout |
| log4j.appender.torque.layout.conversionPattern = %d [%t] %-5p %c - %m%n |
| log4j.appender.torque.append = false |
| |
| # |
| # Scheduler Output |
| # |
| log4j.appender.scheduler = org.apache.log4j.FileAppender |
| log4j.appender.scheduler.file = ${applicationRoot}/logs/scheduler.log |
| log4j.appender.scheduler.layout = org.apache.log4j.PatternLayout |
| log4j.appender.scheduler.layout.conversionPattern = %d [%t] %-5p %c - %m%n |
| log4j.appender.scheduler.append = false |
| |
| # |
| # Velocity gets configured to write its output onto the velocity |
| # category. |
| # |
| log4j.appender.velocity = org.apache.log4j.FileAppender |
| log4j.appender.velocity.file = ${applicationRoot}/logs/velocity.log |
| log4j.appender.velocity.layout = org.apache.log4j.PatternLayout |
| log4j.appender.velocity.layout.conversionPattern = %d [%t] %-5p %c - %m%n |
| log4j.appender.velocity.append = false |
| ]]></source> |
| |
| <p> |
| Sub Projects like Torque and Velocity get either configured correctly |
| by their Services (Velocity by the VelocityService) or already know |
| about commons-logging (Torque). |
| </p> |
| |
| </section> |
| |
| <section name="Usage"> |
| |
| <p> |
| You use the logging by accessing it via commons-logging. This is an |
| example how to do it. |
| </p> |
| |
| <source><![CDATA[ |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| |
| // Provide a logger with the class name as category. This |
| // is recommended because you can split your log files |
| // by packages in the Log4j.properties. You can provide |
| // any other category name here, though. |
| private Log log = LogFactory.getLog(this.getClass()); |
| |
| log.info("this message would go to any facility configured to use the " + this.getClass().getName() + " Facility"); |
| ]]></source> |
| |
| <p> |
| It is recommended for performance reasons that you provide a class wide logger like this: |
| </p> |
| |
| <source><![CDATA[ |
| package foo; |
| |
| import org.apache.commons.logging.Log; |
| import org.apache.commons.logging.LogFactory; |
| |
| public class Bar |
| { |
| // Classwide static logger |
| private static Log log = LogFactory.getLog(Bar.class); |
| . |
| . |
| . |
| } |
| ]]></source> |
| |
| </section> |
| </body> |
| </document> |